新手分不多,求帮忙:值相同的列A,只保留一行,其余列A 用null表示
目前表查出来是这样的:
NAME AGE SCORE
张三 23 100
张三 23 99
张三 23 91
王五 24 55
赵六 23 null
需要这样的结果:
NAME AGE SCORE
张三 23 100
NULL 23 99
NULL 23 91
王五 24 55
赵六 23 NULL
[解决办法]
CREATE TABLE #ta (NAME VARCHAR(8),AGE INT ,SCORE INT,ID INT IDENTITY(1,1))
go
INSERT INTO #ta (NAME,AGE,SCORE)
SELECT '张三',23,100 UNION ALL
SELECT '张三',23,99 UNION ALL
SELECT '张三',23,91 UNION ALL
SELECT '王五',24,55 UNION ALL
SELECT '赵六',23,null
go
--查詢
SELECT
CASE
WHEN EXISTS(SELECT 1 FROM #ta WHERE NAME=a.NAME AND ID<a.ID) THEN NULL
ELSE NAME
END NAME,AGE,SCORE
FROM #ta a
ORDER BY id