我有一个10列的表.我想返回Col006不同的所有行,但返回所有列...
我怎样才能做到这一点?
如果第6列显示如下:
| Column 6 |
| item1 |
| item1 |
| item2 |
| item1 |
Run Code Online (Sandbox Code Playgroud)
我想返回两行,其中一个记录包含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
Run Code Online (Sandbox Code Playgroud)
在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
)
Run Code Online (Sandbox Code Playgroud)
更新:
检查数据库版本和兼容级别:
SELECT @@VERSION
SELECT COMPATIBILITY_LEVEL
FROM sys.databases
WHERE name = DB_NAME()
Run Code Online (Sandbox Code Playgroud)