SQL中PIVOT语法执行结果异常,无法输出预期PersonFK行数据问题求助
PIVOT查询问题排查与修复方案
核心错误
外层SELECT语句中硬编码了常量1、2、3作为输出列,没有引用PIVOT运算生成的[1]、[2]、[3]列,导致输出结果为固定数值,无法展示聚合后的PersonFK值。
隐性问题
RoleCode字段为nvarchar(100)字符串类型,WHERE条件中使用数值IN (1,2,3)进行匹配会触发隐式类型转换,存在索引失效、匹配异常的隐患,建议改为字符串格式匹配。
修正后SQL代码
SELECT RequisitionID, [1] AS One, [2] AS Two, [3] AS Three FROM (SELECT RequisitionID, RoleCode, PersonFK FROM RequisitionHiringTeam WHERE RoleCode IN ('1','2','3')) as src PIVOT ( max(PersonFK) FOR RoleCode IN ([1],[2],[3]) ) as pvt GO
逻辑说明
修正后查询会将同一个RequisitionID下,RoleCode为1、2、3对应的PersonFK值分别展示在One、Two、Three列中,若对应RoleCode无匹配数据则输出NULL,符合行转列展示PersonFK值的需求。
内容的提问来源于stack exchange,提问作者Madhusudan
相关产品推荐
相关产品推荐

