Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pivot SQL表中的订购月份_Sql_Sql Server_Pivot - Fatal编程技术网

Pivot SQL表中的订购月份

Pivot SQL表中的订购月份,sql,sql-server,pivot,Sql,Sql Server,Pivot,我试着做一个以月和年为基础的支点。总的来说,我总是被支点卡住。尝试从1月到12月排序月份,但总是从12月到年列后的1月开始。以下是我迄今为止所做的工作: SELECT PvtMonth.TYear, PvtMonth.December, PvtMonth.November, PvtMonth.October, PvtMonth.September, PvtMonth.August, PvtMonth.July,

我试着做一个以月和年为基础的支点。总的来说,我总是被支点卡住。尝试从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不为NULL
,但您的版本正在计算非
NULL
值。如果它从不为空,只需删除该条件。

“它总是从12月开始到1月”是的,这就是您定义的<代码>选择。。。12月、11月、10月、1月。如果您想要一月一号,请在
选择
语句中首先列出它。-请添加一个标记,以指定您使用的是
mysql
postgresql
sqlserver
oracle
还是
db2
——或者其他完全不同的东西。