Toad for SQL Server v8.1:三表关联查询返回两列结果建模求助
解决方案
手动修改的SQL查询
你可以用COALESCE()函数把RLAT.RS_UID和RLAB.RS_UID合并成单一列,同时保留RollID,最终查询如下:
SELECT COALESCE(RLAT.RS_UID, RLAB.RS_UID) AS RS_UID, RLI.RollID FROM GSL_PI_DEV.PISystem.RollInventory RLI LEFT OUTER JOIN GSL_PI_DEV.PISystem.RollAssignedBottom RLAB ON RLI.RLI_UID = RLAB.RLI_UID LEFT OUTER JOIN GSL_PI_DEV.PISystem.RollAssignedTop RLAT ON RLI.RLI_UID = RLAT.RLI_UID WHERE RLAT.RS_UID IS NOT NULL OR RLAB.RS_UID IS NOT NULL
COALESCE()会优先返回第一个非空的RS_UID:如果RLAT中有值就取它,否则取RLAB的值- WHERE条件保留,确保只返回关联了
RLAT或RLAB的记录
Toad for SQL Server v8.1建模操作
如果要通过Toad可视化建模实现:
- 在查询构建器中添加三个表,按
RLI_UID建立左连接(和你之前的关联方式一致) - 不要直接添加
RLAT.RS_UID和RLAB.RS_UID到结果列,而是点击添加计算列 - 在计算列中输入表达式:
COALESCE(RLAT.RS_UID, RLAB.RS_UID),并设置列名为RS_UID - 添加
RLI.RollID到结果列 - 切换到WHERE标签,添加条件:
RLAT.RS_UID IS NOT NULL OR RLAB.RS_UID IS NOT NULL - 执行查询即可得到目标结果
内容的提问来源于stack exchange,提问作者PAWildsBCR
相关产品推荐
相关产品推荐

