Sql 使用PIVOT汇总每月购买的产品数量和产生的收入

Sql 使用PIVOT汇总每月购买的产品数量和产生的收入,sql,sql-server,tsql,Sql,Sql Server,Tsql,我在这个网站上搜索过,在谷歌上搜索过如何在多个栏目中按月划分销售数量和收入,但还没有找到我要找的内容。我承认,我还没有完全了解PIVOT-ing,所以我可能只是没有完全理解已经发布的解决方案 我想做的是使用PIVOT构造一个查询,它将显示每月的计数,以及购买的产品的每月收入 以下是数据的外观: Product | MonthPurchased | InvoiceNmber | PaymentAmount ==============================================

我在这个网站上搜索过,在谷歌上搜索过如何在多个栏目中按月划分销售数量和收入,但还没有找到我要找的内容。我承认,我还没有完全了解PIVOT-ing,所以我可能只是没有完全理解已经发布的解决方案

我想做的是使用PIVOT构造一个查询,它将显示每月的计数,以及购买的产品的每月收入

以下是数据的外观:

Product | MonthPurchased | InvoiceNmber | PaymentAmount
====================================================
Pencil          1             10001           1.00 
Pencil          2             10005           1.00 
Pen             1             10002           2.00  
Paper           2             10006           1.00  
Pen             1             10003           2.00
Paper           1             10004           1.00
以下是我提出的问题:

插入temp_nbcc_产品中 [产品]、[月份]、t\U发票数量、t\U付款金额 选择prd_名称、DATEPARTmm、pyd_添加日期、发票编号、付款金额 从产品表。。。 选择[产品] ,[1]截至1月31日 ,[2]截至2月31日 ,[3]如三月 ,[4]截至4月 ,[5]五月 ,[6]截至6月 ,[7]截至7月 ,[8]截至8月31日 ,[9]截至9月31日 ,[10]截至10月31日 ,[11]截至11月31日 ,[12]截至12月31日 ,[1]+[2]+[3]+[4]+[5]+[6]+[7]+[8]+[9]+[10]+[11]+[12]作为[总计数] 从…起 选择付款金额、发票金额、[月份]、[产品] 来自temp_nbcc_产品 src 支点 发票数量 [1]、[2]、[3]、[4]、[5]、[6]、[7]、[8]、[9]、[10]、[11]、[12]中的[月份] piv1 按[产品]说明订购; 以下是查询的输出:

Product | Jan | Feb | March .... Total Counts
=============================================
Pencil     1     1      0             2
Pen        2     0      0             2
Paper      1     1      0             2
我希望结果集是这样的:

Product | Jan | Revenue-Jan | Feb | Revenue-Feb .... TotalCounts | TotalRev
========================================================================
Pencil     1       1.00        1       1.00               2          2.00
Pen        2       4.00        0       0.00               2          4.00
Paper      1       1.00        1       1.00               2          2.00

任何帮助都将不胜感激。

我认为条件聚合更容易:

SELECT product,
       sum(case when [Month] = 1 then 1 else 0 end) as jan,
       sum(case when [Month] = 1 then t_payment_amount else 0 end) as jan_revenue,
       sum(case when [Month] = 2 then 1 else 0 end) as feb,
       sum(case when [Month] = 2 then t_payment_amount else 0 end) as feb_revenue,
       . . .
FROM #temp_nbcc_products
GROUP BY product

看起来你知道如何使用PIVOT

使用GROUP BY时,只需在轴之前创建基本数据集,如下所示:

Product | MonthPurchased | TotalMonthCount| TotalPaymentAmount
====================================================
Pencil          1             2              1.00 
Pencil          2             2              1.00 
然后可以为多个列执行透视