Exc*_*arn 2 sql sql-server reporting-services
我有一个场景,我正在努力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
Run Code Online (Sandbox Code Playgroud)
请注意,第一个 coulmn ( AppID) 几乎没有重复项,并且相应的列EmpName要么是Null要么 具有某个值。我想消除isAppID's处的所有重复项。EmpNamenull
如果 unique 没有空值AppID(请参阅最后一行),这可能是直接的,而且我也无法进行硬编码,因为我正在处理大量数据。
另请注意,所有这三列都来自不同的表并已LEFT JOIN到达AppID表。如果您需要查看代码,请告诉我,我没有将其粘贴到此处,因为它有点复杂,但可能不是必需的。
感谢任何形式的帮助和建议。谢谢
在 CTE 中使用 ROW_NUMBER 函数,然后选择第一行。但如果有多个不为 NULL 的 EmpName,您只能按字母顺序获得第一个。
WITH AppAndEmp AS
(
SELECT
AppID
, EmpID
, EmpName
, ROW_NUMBER() OVER(PARTITION BY AppId
ORDER BY (CASE WHEN EmpName IS NULL THEN 0 ELSE 1 END) DESC
, EmpName) AS EmpOrder
FROM
dbo.App
LEFT JOIN dbo.Emp
ON App.AppId = Emp.AppId
)
SELECT
*
FROM
AppAndEmp
WHERE
EmpOrder = 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1906 次 |
| 最近记录: |