SQL透视表,条件上有多个透视表

SQL Pivot table, with multiple pivots on criteria(SQL透视表,条件上有多个透视表)
本文介绍了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

这篇关于SQL透视表,条件上有多个透视表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Execute complex raw SQL query in EF6(在EF6中执行复杂的原始SQL查询)
Hibernate reactive No Vert.x context active in aws rds(AWS RDS中的休眠反应性非Vert.x上下文处于活动状态)
Bulk insert with mysql2 and NodeJs throws 500(使用mysql2和NodeJS的大容量插入抛出500)
Flask + PyMySQL giving error no attribute #39;settimeout#39;(FlASK+PyMySQL给出错误,没有属性#39;setTimeout#39;)
auto_increment column for a group of rows?(一组行的AUTO_INCREMENT列?)
Sort by ID DESC(按ID代码排序)