为什么使用SQL pivot会出现语法错误?
我在1月1日收到一个语法错误 我的SampleStart是datetime格式的。我的别名有问题吗为什么使用SQL pivot会出现语法错误?,sql,pivot,Sql,Pivot,我在1月1日收到一个语法错误 我的SampleStart是datetime格式的。我的别名有问题吗 SELECT * FROM ( SELECT year(SampleStart) year, month(SampleStart) month, AllowedPopulation FROM BIC_AGGREGATE_FINAL WHERE SampleStart BETWEEN '2018-01-01' AND '2018-12-31' ) as s PIVOT ( max(A
SELECT * FROM (
SELECT year(SampleStart) year, month(SampleStart) month, AllowedPopulation
FROM BIC_AGGREGATE_FINAL
WHERE SampleStart BETWEEN '2018-01-01' AND '2018-12-31'
) as s
PIVOT (
max(AllowedPopulation)
FOR month in (
1 JAN, 2 FEB, 3 MAR, 4 APR, 5 MAY, 6 JUN,
7 JUL, 8 AUG, 9 SEP, 10 OCT, 11 NOV, 12 DEC
)
)
ORDER BY year DESC
我希望结果能显示2018年每个月的允许人口。您不能在pivot函数中提供列别名,必须在select中提供。此外,在轴内的子句中指定
时,在选择列时必须应用类似的规则,如果列是保留字,或包含特殊字符(例如空格),或以数字开头等,则必须将名称括在方括号中
最后,必须为pivot函数本身指定一个别名
e、 g
如问题所述,如果SampleStart
是DATETIME
列,那么我将对where子句进行两个更改:
使用专用日期范围,而不是介于
之间的-
yyyyMMdd
,具体取决于您的设置2018-10-01
可以是1月10日,也可以是10月1日 WHERE SampleStart >= '20180101'
AND SampleStart < '20190101'
其中SampleStart>='20180101'
和SampleStart<'20190101'
您不能在pivot函数中提供列别名,必须在select中提供。此外,在轴内的子句中指定时,在选择列时必须应用类似的规则,如果列是保留字,或包含特殊字符(例如空格),或以数字开头等,则必须将名称括在方括号中
最后,必须为pivot函数本身指定一个别名
e、 g
如问题所述,如果SampleStart
是DATETIME
列,那么我将对where子句进行两个更改:
使用专用日期范围,而不是介于
之间的-
yyyyMMdd
,具体取决于您的设置2018-10-01
可以是1月10日,也可以是10月1日 WHERE SampleStart >= '20180101'
AND SampleStart < '20190101'
其中SampleStart>='20180101'
和SampleStart<'20190101'
尝试使用-
SELECT year,
[1] AS JAN,
[2] AS FEB,
[3] AS MAR,
[4] AS APR,
[5] AS MAY,
[6] AS JUN,
[7] AS JUL,
[8] AS AUG,
[9] AS SEP,
[10] AS OCT,
[11] AS NOV,
[12] AS DEC
FROM
(
SELECT year(SampleStart) year,
month(SampleStart) month,
AllowedPopulation
FROM BIC_AGGREGATE_FINAL
WHERE SampleStart BETWEEN '2018-01-01' AND '2018-12-31'
) as s
PIVOT
(
max(AllowedPopulation)
FOR month in (
[1], [2], [3], [4], [5], [6],
[7], [8], [9], [10], [11], [12]
)
)AS PVT
ORDER BY year DESC
试一试-
SELECT year,
[1] AS JAN,
[2] AS FEB,
[3] AS MAR,
[4] AS APR,
[5] AS MAY,
[6] AS JUN,
[7] AS JUL,
[8] AS AUG,
[9] AS SEP,
[10] AS OCT,
[11] AS NOV,
[12] AS DEC
FROM
(
SELECT year(SampleStart) year,
month(SampleStart) month,
AllowedPopulation
FROM BIC_AGGREGATE_FINAL
WHERE SampleStart BETWEEN '2018-01-01' AND '2018-12-31'
) as s
PIVOT
(
max(AllowedPopulation)
FOR month in (
[1], [2], [3], [4], [5], [6],
[7], [8], [9], [10], [11], [12]
)
)AS PVT
ORDER BY year DESC