如何在SQL Server 2008中的一列中拆分项目

时间:2013-04-23 10:59:23

标签: sql-server-2008

WITH MYTABLE AS (
select Executive, count([Cat A]) AS [1-3], count([Cat B]) AS [4-6],count([Cat C]) AS [7-10],count([Cat D]) AS [11-15],count([Cat E]) AS [16+]
      from (
            select 
                  Executive,
                case  when [Next Follow Up Date] < GETDATE() and (DATEDIFF(d,[next follow up date],getdate()) > 0 and DATEDIFF(d,[next follow up date],getdate()) < 4)
                              then 'A'
                  end as [Cat A],
                  case  when [Next Follow Up Date] < GETDATE() and (DATEDIFF(d,[next follow up date],getdate()) > 3 and DATEDIFF(d,[next follow up date],getdate()) < 7)
                              then 'B'
                  end as [Cat B],
                  case when [Next Follow Up Date] < GETDATE() and (DATEDIFF(d,[next follow up date],getdate()) > 6 and DATEDIFF(d,[next follow up date],getdate()) < 11)
                              then 'C'
                  end as [Cat C],
                  case  when [Next Follow Up Date] < GETDATE() and (DATEDIFF(d,[next follow up date],getdate()) > 10 and DATEDIFF(d,[next follow up date],getdate()) < 16)
                              then 'D'
                  end as [Cat D],
                  case  when [Next Follow Up Date] < GETDATE() and (DATEDIFF(d,[next follow up date],getdate()) > 15)
                              then 'E'
                  end as [Cat E]
                  from vw_FollowUps)
            as Table1

      group by Executive, [Cat A], [Cat B], [Cat C], [Cat D], [Cat E]
      )
  Select T1.Executive, SUM([1-3]) AS [1-3],SUM([4-6]) AS [4-6],SUM([7-10]) AS [7-10],SUM([11-15]) AS [11-15],SUM([16+]) AS [16+]
  from MYTABLE T1
  GROUP BY T1.Executive

i got output below

 Executive  1-3  4-6  7-10  11-15  16+

 kushali     1    2    0     1      2
 nirupama    0    1    1     3      1

但我需要下面的输出 - 我想要项目列以及我们如何在一列中拆分项目

Executive   Projects                 1-3  4-6  7-10  11-15  16+

kushali    swgruha,runi,nanuapa       1    2    0     1      2
nirupama   swgruha,runi,nanuapa       1    2    0     1      2

1 个答案:

答案 0 :(得分:0)

从您的示例中,您似乎在询问如何汇总此表单中的一系列记录......

 kushali      swgruha    1
 kushali      runi       1
 kushali      nanuapa    2

......以这种形式:

kushali      swgruha,runi,nanuapa      4

...以便您在第一列上进行GROUP,将第二列聚合为CSV(逗号分隔变量)字符串,并在第三列上执行SUM。

这可以做到,并且有多种方式。

在不知道哪个表包含要聚合成CSV字符串的字符串的情况下,我无法为您提供准确的SQL语句。但是您可以找到分步示例here。 (免责声明:这是我的博客。)你可以使用CTE和一些XML函数来完成它。