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