SQL透视表,条件上有多个透视表
这是我的数据集,
它有一个预订(唯一ID)、一个保留_dt、一个会计年度(大多数情况下都是同一年)、月份(包括数字和名称)以及一个预订状态,然后它有总保留数,后面跟一个计数器(基本上是
每个预订行1)
这些是我的指导方针(需要按月转为栏目)
- 请求-所有不同预订的计数
- NUM_REQUESTED(SUM TOTAL_NUMBER_REQUESTED BY月)
- 已预订(所有不同预订状态的计数为已创建订单) 状态为已创建订单的NUM_BOOKED(SUM TOTAL_NUMBER_REQUESTED BY MONTH)
- NOT_BOOKED(状态为未履行的所有不同预订的计数)
- NOT_NUM_BOOKED,(状态为未完成的月份SUM TOTAL_NUMBER_REQUESTED)
我希望将此转换为数据透视表,这就是到目前为止我得到的信息,但无法找出它无法工作的原因。
我想我应该使用SUM(TOTAL_NUMBER_REQUESTED)或COUNT(TOTAL_REQUESTED)将上面的每条指南都变成一个列,其中预订状态是.诸如此类。 我愿意接受任何其他想法,让它变得更简单、更有效。SELECT [month_name],
fyear AS fyear,
Requested,
Num_Requested
FROM (SELECT reservation,
reservation_status,
total_number_requested,
fyear,
[month_name],
[month],
total_requested
FROM #temp2) SourceTable
PIVOT (SUM(total_number_requested)
FOR reservation_status IN ([Requested])) PivotNumbRequested PIVOT(COUNT(reservation)
FOR total_requested IN ([Num_Requested])) PivotCountRequested
WHERE [month] = 7
ORDER BY fyear,
[month];
解决方案
使用条件表达式模拟数据透视。示例:
SELECT fyear, Month, Monthname, Count(*) AS CountALL, Sum(total_number_requested) AS TotNum,
Sum(IIf(reservation_status = "Order Created", total_number_Requested, Null)) AS SumCreated
FROM tablename
GROUP BY fyear, Month, MonthName
更多信息:
SQLServer - Multiple PIVOT on same columns
Crosstab Query on multiple data points
相关文章