Sql server 如何在SQL中将列设为行

Sql server 如何在SQL中将列设为行,sql-server,sql-server-2012,pivot-table,Sql Server,Sql Server 2012,Pivot Table,如何使列QuotedReal并作为“ActualStatus”列值的一部分进行评级 select EffectiveDate, ActualStatus, SUM(case when ActualStatus = 'Bound' then 1 when ActualStatus = 'Declined' then 1 when ActualStatus = 'Quoted' th

如何使列QuotedReal并作为“ActualStatus”列值的一部分进行评级

select
        EffectiveDate,
        ActualStatus,
        SUM(case when ActualStatus = 'Bound' then 1 
                 when ActualStatus = 'Declined' then 1
                 when ActualStatus = 'Quoted' then 1 
                 when ActualStatus = 'Not Taken Up' then 1
                 when ActualStatus = 'Indication' then 1
                 when ActualStatus = 'Submitted' then 1
                 when ActualStatus = 'Lost' then 1
                 when ActualStatus = 'Indicated' then 1             
        else 0 end) as CountActual,
        SUM(Quoted) as QuotedReal,
        SUM(Case when QuotedPremium is not null then 1 else 0 end) as Rated
from #Olegggg
group by EffectiveDate,
        ActualStatus
这就是我现在拥有的:

但我需要这样的东西:


您可能需要使用联合将3个记录集连接在一起

select      EffectiveDate,
            ActualStatus,
            COUNT(*) as CountActual
from        #Olegggg
where       ActualStatus IN ('Bound','Declined',...'Indicated')
group by    EffectiveDate,
            ActualStatus

union all 
select      EffectiveDate,
            'Quoted Real',
            SUM(Quoted)
from        #Olegggg
group by    EffectiveDate

union all 
select      EffectiveDate,
            'Rated',
            COUNT(QuotedPremium)
from        #Olegggg
group by    EffectiveDate

JamieD您的解决方案简单而正确,除了

1.ActualStatus不会在组中用于Rated和QuotedReal。它只能按生效日期分组和聚合,以便每个日期有一行


不需要有所有的联合,因为我们没有任何重复的数据拉

select      EffectiveDate,
            ActualStatus,
            COUNT(*) as CountActual
 from        #Olegggg
where       ActualStatus IN ('Bound','Declined',...'Indicated')
group by    EffectiveDate,
        ActualStatus
union 
select      EffectiveDate,
       'Quoted Real',
        SUM(Quoted)
from        #Olegggg
group by    EffectiveDate,
   //removed ActualStatus
union 
  select      EffectiveDate,
            'Rated',
             COUNT(QuotedPremium)
 from        #Olegggg
  group by    EffectiveDate,
    //removed ActualStatus

您可以将表格和样本数据的ddl作为插入来发布,而不是图片吗?这可能与使用DISTINCT运算符有关,选择DISTINCT EffectiveDate,“Quoted Real”,SUMGQUOTED from OLEGGGYES,这将提供与group BY相同的输出,无需使用union all,因为我们没有任何重复的数据可提取。所有工会都比工会成本低得多。如果您知道您的集合之间不可能有重复项,则UNION ALL是合适的运算符。@rmehra76 SELECT DISTINCT决不能生成一个结果集,该结果集在DISTINCT应用到的列中包含一个以上的值实例。@russ,我不明白您的意思。我在这篇文章中在哪里使用了DISTINCT?