SQL Server - 如何将列与相同的组合

时间:2016-06-09 18:05:56

标签: sql sql-server

我已经以某种方式加入了一些表并且列出了一些列,所以当我运行SELECT SSN, Name, Year2010/Season1, Year2010/Season2, Year2010/Season3, Year2010/Season4 FROM (SELECT ...... ) AS WORKERS时,我得到一张表格如下:

SSN  Name Year2010/Season1  Year2010/Season2  Year2010/Season3  Year2010/Season4
112  John         5.4  
234  Tom                          4.2
543  Ben                                                           9.3
234  Tom                                            3.2

该表显示了工人及其每年和每个工作时间。但是我试图将这些重复值(同一个人)组合在一起,并根据年份和季节将所有小时数移到同一行。像这样的东西(汤姆被移动的地方):

SSN  Name Year2010/Season1  Year2010/Season2  Year2010/Season3  Year2010/Season4
112  John         5.4                                
234  Tom                          4.2                3.2
543  Ben                                                           9.3

我已经尝试了几个小时,但根据我正在做的选择语句来获取此表,并没有真正找到合并这些的好方法。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

您想要聚合。您可以通过调整查询来更简单地执行此操作,但您也可以这样做:

with q as (<your query here>)
select ssn, name,
       max([Year2010/Season1]) as  [Year2010/Season1],
       max([Year2010/Season2]) as  [Year2010/Season2],
       max([Year2010/Season3]) as  [Year2010/Season3],
       max([Year2010/Season4]) as  [Year2010/Season4]
from q
group by ssn, name;

答案 1 :(得分:1)

好像你需要使用SUM

SELECT  SSN,
        Name, 
        SUM([Year2010/Season1]) [Year2010/Season1],
        SUM([Year2010/Season2]) [Year2010/Season2],
        SUM([Year2010/Season3]) [Year2010/Season3],
        SUM([Year2010/Season4]) [Year2010/Season4]
FROM dbo.YourTable
GROUP BY SSN,
         Name;