SQL Server 2008
我有一个包含许多行的视图,其中也可以多次获得确切的行。我已经尝试将 ROW_NUMBER() OVER ( ORDER BY col1 ) 作为 row_id 但遇到了问题:
当使用 JOIN 或 WHERE 子句时,row_ids 会动态调整到新的结果集。相反,我需要的是 row_id 来表示在视图中为该行提供的 row_id 值,而没有任何 JOIN 或 WHERE 子句。
有任何想法吗?
编辑:我添加了一个示例,应该在发布之前完成。
没有 WHERE 子句:
SELECT ROW_NUMBER() OVER ( ORDER BY col1 ) 作为 row_id, result.*
FROM
(SELECT 'Adam' col1, 'West' col2
UNION ALL
SELECT 'Adam' col1, 'Cole' col2
UNION ALL
SELECT 'Adam' col1, 'West' col2
UNION ALL
SELECT 'Danny' col1, 'West' col2) 结果
结果:
row_id col1 col2
1 Adam Cole
2 Adam West
3 Adam West
4 Danny West
现在当我使用 WHERE 子句时
SELECT ROW_NUMBER() OVER ( ORDER BY col1 ) 作为 row_id, result.*
FROM
(SELECT 'Adam' col1, 'West' col2
UNION ALL
SELECT 'Adam' col1, 'Cole' col2
UNION ALL
SELECT 'Adam' col1, 'West' col2
UNION ALL
SELECT 'Danny' col1, 'West' col2) 结果
WHERE col2='West'
结果:
row_id col1 col2
1 Adam West
2 Adam West
3 Danny West
期望的结果:
row_id col1 col2
2 Adam West
3 Adam West
4 Danny West