查询在Excel输出中写入额外的行

我试图完成似乎应该在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语句,但似乎无法使它从一个创build两个行,当我尝试使用UNION ALL我得到一个语法错误。

在Microsoft Query中,如何构造一条SQL语句以从一行中的现有值创build两行?

UPDATE

感谢你目前的帮助。 首先,作为参考,这是在Microsoft Query中重新创build表的默认语句:

 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. Too few parameters. Expected 4.

LiveDemo

 CREATE TABLE #mytable( ID INTEGER NOT NULL PRIMARY KEY ,value VARCHAR(11) NOT NULL ,value_type VARCHAR(9) NOT NULL ); INSERT INTO #mytable(ID,value,value_type) VALUES (1,'minneapolis','city_name'); INSERT INTO #mytable(ID,value,value_type) VALUES (2,'cincinnati','city_name'); SELECT ID ,[attr_name] = 'value' ,[attr_value] = value FROM #mytable UNION ALL SELECT ID ,[attr_name] = 'value_type' ,[attr_value] = value_type FROM #mytable ORDER BY id; 

好吧,回到原来的声明,并根据@ lad2025提出的build议,我提出了这个声明,达到了我原来的问题:

 SELECT ID, 'name' AS [attr_name], name AS [attr_value] FROM `path\testconvert.xlsx`.`Sheet3$` `Sheet3$` UNION ALL SELECT ID, 'name_type', name_type FROM `path\testconvert.xlsx`.`Sheet3$` `Sheet3$` ORDER BY ID; 

主要问题之一是新的列名只在第一个SELECT语句中定义。 另外,括号是好的,只是不是@ lad2025原来是如何使用它们。

微软查询是相当挑剔的。