我在SQL Server中创建了一个包含row_number()函数的视图。视图中引用的表包含数据库中的每个记录,并根据复合ID的重复实例枚举记录。例如:
row_number() over (
partition by
composite_id
order by
sample_value) as rownum
问题是每当我将这个视图连接到另一个表(或基于WHERE子句过滤行)时,行号仍会返回为引用的完整表返回的值在视图中。相反,我希望根据最终结果集中最终返回的记录来更新行号。
例如:
select *
from my_created_view a
where a.sample_value in ('a','b','c')
或
select *
from my_created_view a
inner join subset_of_data b on a.sample_value = b.sample_value
...上面的任何一个查询都会导致记录数量少于完整原始表中包含的数量,而得到的composite_id集合有时只包含一个实例。如果结果集只包含一个composite_id实例,我希望该行接收值为1。
这可能吗?或者视图中的行编号是否创建了一个仅与创建的视图中的查询相关联的行号?
提前感谢您可以在这里放下任何光线!