在SQL Server中显示具有相同emp的多个空值行的单行

时间:2017-11-30 05:45:51

标签: sql-server

我有一张这样的表:

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查询

2 个答案:

答案 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!

感谢。