我正在尝试完成一些在 MS Excel 中看起来应该很简单的事情。我想使用单个 SQL 查询——所以我可以将它传递给其他人进行复制和粘贴——尽管我知道以下也可以通过其他方法实现。表 1 如下所示:
ID value value_type
1 minneapolis city_name
2 cincinnati city_name
我希望 SQL 查询返回这两行的“爆炸”版本:
ID attr_name attr_value
1 value minneapolis
1 value_type city_name
2 value cincinnati
2 value_type city_name
我需要做的还有很多,但这个概念是问题的核心。我尝试了一个SELECT
语句,但似乎无法让它从一个创建两行,并且当我尝试使用时UNION ALL
出现语法错误。
在 Microsoft Query 中,如何构造 SQL 语句以从一行中的现有值创建两行?
更新
感谢你目前的帮助。首先,作为参考,这里是在 Microsoft Query 中重新创建表的默认语句:
SELECT
`Sheet3$`.ID,
`Sheet3$`.name,
`Sheet3$`.name_type
FROM `path\testconvert.xlsx`.`Sheet3$` `Sheet3$`
所以,在@lad2025 的带领下,我有:
SELECT
ID = `Sheet3$`.ID
,attr_name = 'value'
,attr_value = `Sheet3$`.value
FROM `path\testconvert.xlsx`.`Sheet3$` `Sheet3$`
UNION ALL
SELECT
ID = `Sheet3$`.ID
,attr_name = 'value_type'
,attr_value = `Sheet3$`.value_type
FROM `path\testconvert.xlsx`.`Sheet3$` `Sheet3$`
结果就是这个错误Too few parameters. Expected 4.