sql - 在 Pivot SQL 表中排序月份
问题描述
我正在尝试基于月份和年份进行 PIVOT。一般来说,我总是卡在枢轴上。尝试从 1 月到 12 月订购月份,但它总是在年份列之后从 12 月到 1 月开始。这是我到目前为止所做的:
SELECT PvtMonth.TYear,
PvtMonth.December,
PvtMonth.November,
PvtMonth.October,
PvtMonth.September,
PvtMonth.August,
PvtMonth.July,
PvtMonth.June,
PvtMonth.May,
PvtMonth.April,
PvtMonth.March,
PvtMonth.February,
PvtMonth.January
FROM
(
SELECT DATENAME(YEAR, InvoiceDate) AS TYear,DATENAME(MONTH, InvoiceDate) AS TMonth, TrackingNo
FROM [MSM14].[dbo].[PVH_Global_Dash]
WHERE ReceiverAddress LIKE '%78 Mccullough%'
) AS P1
PIVOT
(
COUNT(TrackingNo)
FOR TMonth IN
(
[January],
[February],
[March],
[April],
[May],
[June],
[July],
[August],
[September],
[October],
[November],
[December]
)) AS PvtMonth
解决方案
只需使用条件聚合:
SELECT YEAR(InvoiceDate) AS TYear,
SUM(CASE WHEN MONTH(InvoiceDate) = 1 THEN 1 ELSE 0 END) as Jan,
SUM(CASE WHEN MONTH(InvoiceDate) = 2 THEN 1 ELSE 0 END) as Feb,
. . .
FROM [MSM14].[dbo].[PVH_Global_Dash]
WHERE ReceiverAddress LIKE '%78 Mccullough%' AND
TrackingNo IS NOT NULL
GROUP BY YEAR(InvoiceDate);
该条件TrackingNo IS NOT NULL
可能不是必需的,但您的版本正在计算非NULL
值。如果它永远不会NULL
删除条件。
推荐阅读
- laravel - 在 Laravel 模型类中动态添加访问器方法
- python - pyautogui 脚本在缩放应用程序中不起作用
- javascript - 使用 d3 库生成单色调色板
- java - 在java Swing中绘制,移动形状
- ruby-on-rails - 如何使用 Unicorn、Octopus 和 Postgresql 设置 Rails 模式缓存
- javascript - 如何让 jquery datepicker 无法工作克隆行
- html - 尽管指定了填充,为什么图像元素没有居中?
- laravel - 如何在 Laravel 8 中处理 NotFoundHttpException?
- arrays - 如何访问嵌套数组的最后一个索引
- discord - 是否有一个正在工作的解禁命令?