【发布时间】:2016-02-17 01:41:17
【问题描述】:
我有一个查询如下...
select *
from (select COL1, COL2, COL3,
ROW_NUMBER() OVER (PARTITION BY COL2,COL3 ORDER BY COL2,COL3) AS rn
from TABLE
) t
where rn = 1
返回预期结果。当我修改外部选择以明确要求没有行号列的列时...
select COL1, COL2, COL3 from
from (select COL1, COL2, COL3,
ROW_NUMBER() OVER (PARTITION BY COL2, COL3 ORDER BY COL2, COL3) AS rn from TABLE
) t
where rn = 1
我得到不同的结果。事实上,返回的 COL1、COL2 和 COL3 列中的值组合实际上并不存在于数据库的任何行中。
我是疯了,还是发现了一个错误,或者更有可能是我误解了这应该如何工作?
【问题讨论】:
标签: sql sql-server sql-server-2008