SQL 列名是一个数据并且反透视不起作用

Posted

技术标签:

【中文标题】SQL 列名是一个数据并且反透视不起作用【英文标题】:SQL Column name is a data and unpivoting not working 【发布时间】:2021-03-26 05:58:42 【问题描述】:

首先感谢您的帮助!我尝试了 5 个多小时,但无法修复它..

我在下面有这张表:

有 57 个日期列.. 我的预期结果是(只需转置数据列,以便我可以在 PBI 中正确运行 Dax 公式 :))

所以,我做了这个 Unpivot:

SELECT [Provincias], [Paises], [Latitude], [Longitude], [DATE], [VALUE]
FROM
(SELECT [Province State], [Country Region], Lat, Long,  30/1/2020,  31/1/2020,  1/2/2020,   2/2/2020,   ...LOT OF DATES....
FROM [data_time_series_19-covid-Confirmed]) PT
UNPIVOT
(Dias FOR ds IN
(   30/1/2020,  31/1/2020,  1/2/2020,   2/2/2020.... LOT OF DATES....)
)AS unpvt

我尝试了 [日期],但效果不佳..

上面写着:'30' 附近的 Synthax 不正确..

如果是日期名称,SQL 似乎找不到列名称。它非常适合第 3 行,但在第 7 行中不起作用(尴尬 o.O)

但是当我输入时:

从 [data_time_series_19-covid-Confirmed] 中选择 [22/1/2020]

它工作正常!

谢谢

【问题讨论】:

什么是 dbms(例如 mysql、Oracle),这一点很重要,它会影响可用的解决方案。看起来像 TSQL 请只选择相关标签 ***.com/questions/13372276/… 可能对你有帮助 您没有回答自己的问题吗?您说,当您运行“从 [data_time_series_19-covid-Confirmed] 中选择 [22/1/2020]”时,它可以工作(并且在该查询中,列名周围有方括号),但在非透视查询中,您没有有方括号中的列名.....我有点困惑...... PaulMaxwell,我正在使用 SQL SERVER Bhaskar,谢谢,但没有解决 Craig,不,它不起作用.. 当我放入方括号时,它在 unpivot 中找不到列代码。仅在我使用“从”中选择 [数据] 时才有效。非常令人困惑 【参考方案1】:

认为您需要将这些日期引用放在方括号之间

SELECT [Provincias], [Paises], [Latitude], [Longitude], [DATE], [VALUE]
FROM
(SELECT [Province State], [Country Region], Lat, Long,  [30/1/2020],  [31/1/2020],  [1/2/2020],   [2/2/2020]
FROM [data_time_series_19-covid-Confirmed]) PT
UNPIVOT
(Dias FOR ds IN
(   [30/1/2020],  [31/1/2020],  [1/2/2020],   [2/2/2020])
)AS unpvt

【讨论】:

以上是关于SQL 列名是一个数据并且反透视不起作用的主要内容,如果未能解决你的问题,请参考以下文章

spark-sql/Scala 中的反透视列名是数字

SQL Server,临时表,SELECT 语句不起作用

更改部分DF的列名,不起作用

在 h2 数据库 sql 脚本中不起作用

在 Oracle SQL 中将数据透视表转换为平面表

OpenGL透视和照明不起作用?