我想在表中对一些基本行进行编号而不混合排序。我有这样的表:
状态ProductId
A 12
NULL 25
B 35
C 56
NULL 89
NULL 99
D 120
E 140
我想添加否列,以使用相同的ProductId
排序来计算非空的状态,但是,不想计算NULL
行。我想要这样的结果:
No Status ProductId
1 A 12
NULL 25
2 B 35
3 C 56
NULL 89
NULL 99
4 D 120
5 E 140
我在SQL Sever 2008,SSRS上工作。有人可以在SQL端或RDL文件中提供解决方案。
答案 0 :(得分:1)
你可以这样做:
WITH CTE
AS
(
SELECT
ROW_NUMBER() OVER(ORDER BY Status) AS No,
Status, ProductId
FROM table1
WHERE Status IS NOT NULL
)
SELECT
c.No,
t.Status,
t.ProductId
FROM table1 AS t
LEFT JOIN CTE AS c ON c.ProductId = t.ProductId
ORDER BY ProductId;
您可以直接在报告中使用此查询。