我有一个10列的表.
我想返回Col006不同的所有行,但返回所有列…
我想返回Col006不同的所有行,但返回所有列…
我怎样才能做到这一点?
如果第6列显示如下:
| Column 6 | | item1 | | item1 | | item2 | | item1 |
我想返回两行,其中一个记录包含item1,另一个记录包含item2,以及所有其他列.
解决方法
在sql Server 2005及更高版本中:
;WITH q AS ( SELECT *,ROW_NUMBER() OVER (PARTITION BY col6 ORDER BY id) rn FROM mytable ) SELECT * FROM q WHERE rn = 1
在sql Server 2000中,前提是您有一个主键列:
SELECT mt.* FROM ( SELECT DISTINCT col6 FROM mytable ) mto JOIN mytable mt ON mt.id = ( SELECT TOP 1 id FROM mytable mti WHERE mti.col6 = mto.col6 -- ORDER BY -- id -- Uncomment the lines above if the order matters )
更新:
检查数据库版本和兼容级别:
SELECT @@VERSION SELECT COMPATIBILITY_LEVEL FROM sys.databases WHERE name = DB_NAME()