【发布时间】:2014-10-01 16:10:45
【问题描述】:
我有一个场景,我正在使用SQL Server Reporting Services 创建一个表格报告,并停留在我得到一列重复值的地方。以下是代码的示例输出:
AppID EmpID EmpName
2002912 81555 NULL
2002912 81588 Jenn - 81588
2026880 9328 NULL
2026880 9628 Brad - 09628
2027065 92174 Julie - 92174
2027065 92714 NULL
2028989 72138 NULL
2028989 91366 Alan - 91366
2029233 17438 NULL
2029233 53712 Brad - 53712
2031585 37902 NULL
2031588 17723 Richard - 17723
2031591 54551 Paula - 54551
2031593 52240 Sarah - 52240
2031597 72778 Daisy - 72778
2031603 12659 NULL
请注意,第一列 (AppID) 几乎没有重复项,并且对应的列 EmpName 要么是 Null,要么具有一些值。我想消除所有重复的AppID's,其中EmpName 是null。
如果唯一的AppID 没有空值(请参阅最后一行),这可能是直截了当的,我也无法硬编码,因为我正在处理大量数据。
另外请注意,所有这三列都来自不同的表,并且从 LEFT JOIN 到 AppID 表。如果您需要查看代码,请告诉我,我没有将其粘贴在这里,因为它有点复杂,虽然可能不需要。
感谢您的任何帮助和建议。谢谢
【问题讨论】:
-
使用
ROW_NUMBER OVER (partition by appid ORDER BY EmpName NULLS FIRST)并选择第 2 行。Im not sure about the syntax,but this is the general idea.OR useORDER BY (CASE WHEN EmpNAme IS NULL THEN 0 ELSE 1 END)` 如果 NULLS FIRST 不可用。 -
我不想消除
AppID唯一的null值。那么在这种情况下,这将如何区分重复的AppID's和唯一的AppID's?
标签: sql sql-server reporting-services