2013-06-19 79 views
0

我使用的是SQL Server 2008 R2中,有一個表:的Transact SQL - 查詢的彙總

table origin

,我需要把它概括爲:

table result

我正在嘗試使用多維數據集/彙總和分組函數,但我堅持如何解決它。 所以我會問,如果有人可以,請幫助,並告訴我這個結果的查詢。

在此先感謝。

+2

這確實應該在報告層上完成的,不在數據庫中(特別是如果你想要不同的顏色和粗體) – Lamak

+0

對不起。不重視顏色和任何格式。我只需要按順序的數據。 – jMarcel

+2

即使您忽略了顏色和文本格式,請查看您想要的數據。您應該如何知道第一個'ID by ID'產品的總數是用於最好的產品?以及最貴的客戶嗎?在您的示例中,其他每列都是空白的,因此無法區分它們。 – Lamak

回答

0

正如我所說,我堅持如何解決它。但我有一些偉大的鏈接它幫了我很多思考和解決問題,例如: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