日期:2014-05-17  浏览次数:20410 次

新手分不多,求帮忙:值相同的列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