Sql 编号不受where子句影响的视图的行号
SQL Server 2008 我有一个有许多行的视图,在那里也可以多次获得精确的行。我已经尝试将ROW_NUMBER()作为ROW_id(按col1排序),但遇到了一个问题: 使用JOIN或WHERE子句时,将根据新结果集动态调整行ID。相反,我需要的是row_id来表示在视图中为该行给定的row_id值,而不需要任何JOIN或WHERE子句 有什么想法吗 编辑:我添加了一个示例,应该在发布之前完成 无WHERE条款: 选择(按col1排序)上的行编号()作为行id,结果。*Sql 编号不受where子句影响的视图的行号,sql,sql-server,view,Sql,Sql Server,View,SQL Server 2008 我有一个有许多行的视图,在那里也可以多次获得精确的行。我已经尝试将ROW_NUMBER()作为ROW_id(按col1排序),但遇到了一个问题: 使用JOIN或WHERE子句时,将根据新结果集动态调整行ID。相反,我需要的是row_id来表示在视图中为该行给定的row_id值,而不需要任何JOIN或WHERE子句 有什么想法吗 编辑:我添加了一个示例,应该在发布之前完成 无WHERE条款: 选择(按col1排序)上的行编号()作为行id,结果。* 从 ( 选择“A
从
(
选择“Adam”col1,“West”col2
联合所有人
选择“Adam”col1、“Cole”col2
联合所有人
选择“Adam”col1,“West”col2
联合所有人
选择“Danny”col1,“West”col2
)结果
结果:
row_id col1 col2
1 Adam Cole
2 Adam West
3 Adam West
4 Danny West
row_id col1 col2
1 Adam West
2 Adam West
3 Danny West
现在当我使用WHERE子句时
选择(按col1排序)上的行编号()作为行id,结果。*从
(
选择“Adam”col1,“West”col2
联合所有人
选择“Adam”col1、“Cole”col2
联合所有人
选择“Adam”col1,“West”col2
联合所有人
选择“Danny”col1,“West”col2
)结果
col2='West'在哪里 结果:
row_id col1 col2
1 Adam Cole
2 Adam West
3 Adam West
4 Danny 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
您可以在子查询中生成行号。这些不受外部查询中的
join
或where
子句的影响:
select *
from (
select row_number() over order by col1) as rn
, *
from YourTable
) as YourTableWithRowNumber
join OtherTable
on YourTableWithRowNumber.id = OtherTable.YourTableId
where YourTableWithRowNumber.col1 not like '%excludeme%'
您可以在子查询中生成行号。这些不受外部查询中的
join
或where
子句的影响:
select *
from (
select row_number() over order by col1) as rn
, *
from YourTable
) as YourTableWithRowNumber
join OtherTable
on YourTableWithRowNumber.id = OtherTable.YourTableId
where YourTableWithRowNumber.col1 not like '%excludeme%'
请发布您的表格结构、一些示例数据和期望的结果。请发布您的表格结构、一些示例数据和期望的结果。这真的可能是它-我将尝试一下,谢谢!这真的可能是它-我会尝试一下,谢谢!