我有一张这样的表:
CCNo Name Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
C121 Ram 1200 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
C121 Ram NULL 2500 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
C121 Ram NULL NULL NULL NULL 1470 NULL NULL NULL NULL NULL NULL NULL
F254 RAJ 5000 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
我想要为同一个员工删除重复的空值,其中一个记录显示月工资而不是一个月一个月。
我需要一个SQL Server查询
答案 0 :(得分:2)
尝试此查询
SELECT
CCNo,
Name,
SUM([Jan]) [Jan],
SUM([Feb]) [Feb],
SUM([Mar]) [Mar],
...
SUM([Dec]) [Dec]
FROM [Your Table]
GROUP BY CCNo,Name
答案 1 :(得分:0)
尝试以下方法:
DECLARE @TAB TABLE (CCNO VARCHAR(10), [NAME] VARCHAR(100), JAN MONEY, FEB MONEY, MAR MONEY, APR MONEY, MAY MONEY, JUN MONEY, JUL MONEY, AUG MONEY, SEP MONEY, OCT MONEY, NOV MONEY, [DEC] MONEY)
INSERT INTO @TAB
SELECT 'C121', 'RAM', 1200 ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL UNION ALL
SELECT 'C121', 'RAM', NULL ,2500 ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL UNION ALL
SELECT 'C121', 'RAM', NULL ,NULL ,NULL ,NULL ,1470 ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL UNION ALL
SELECT 'F254', 'RAJ', 5000 ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL
SELECT CCNO, [NAME], [MONTH], SALARY FROM @TAB
UNPIVOT
(
SALARY
FOR
[MONTH] IN ([JAN] , [FEB] , [MAR] , [APR] , [MAY] , [JUN] , [JUL] , [AUG] , [SEP] , [OCT] , [NOV], [DEC])
)UPV
ORDER BY 1
HTH!
感谢。