【问题标题】:Transact SQL - Query for SummarizeTransact SQL - 查询汇总
【发布时间】:2013-06-19 16:33:46
【问题描述】:

我正在使用 SQL Server 2008 R2 并有一个表:

我需要把它总结为:

我正在尝试使用多维数据集/汇总和分组功能,但我不知道如何解决它。 所以我想问是否有人可以,请帮助并向我显示此结果的查询。

提前致谢。

【问题讨论】:

  • 这真的应该在报告层上完成,而不是在数据库中(特别是如果你想要不同的颜色和粗体)
  • 对不起。考虑颜色和任何格式。我只需要按顺序排列的数据。
  • 即使您忽略颜色和文本格式,也请查看您想要的数据。你怎么知道第一个Total of products by ID 行是针对哪个产品的?和哪个客户?,在你的例子中,其他每一列都是空白的,所以没有办法区分它们
  • 嗨拉马克。如果我对暴露我的问题不是很清楚,我很抱歉,但我花了一些时间终于得到了如下解决方案。无论如何,感谢您的宝贵时间。

标签: sql sql-server sql-server-2008-r2 summarization


【解决方案1】:

正如我所说,我困在如何解决它上。但我有一些很棒的链接帮助我思考和解决它,例如:http://blogs.msdn.com/b/craigfr/archive/2007/09/21/aggregation-with-rollup.aspx

这是我解决的方式:

select   
    0 order_customer,  
    customer_ID,  
    0 order_product,  
    product_ID,   
    0 tipo_linha,  
    subProduct_description,  
    subProduct_balance  

from products  
  union all     
select   
    GROUPING(customer_ID) order_customer,  
    customer_ID,  
    GROUPING(product_ID) order_product,  
    product_ID,   
    1 tipo_linha,  
    CASE  
        WHEN (GROUPING(customer_ID) = 1) THEN 'Grand Total'             
        WHEN (GROUPING(product_ID) = 1) THEN 'Total of products by customer ' 
+ cast(customer_ID as varchar)  
        ELSE 'Total by product ' + cast(product_ID as varchar)  
    END  msg,     
    sum(subProduct_balance ) balance      
from products   
group by rollup(customer_ID, product_ID)  
order by order_customer, customer_ID, order_product,  product_ID, tipo_linha 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-20
    • 2021-11-16
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    相关资源
    最近更新 更多