Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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
Sql server 如何选择列值作为行?_Sql Server - Fatal编程技术网

Sql server 如何选择列值作为行?

Sql server 如何选择列值作为行?,sql-server,Sql Server,我在SQL Server中有一个名为ItemData的表,如下所示 Create Table ItemDate( ItemName VARCHAR(50), Hyundai int,[I10/ I20] int,Maruti int); insert into ItemData values('Coolant Change',150,150,150) insert into ItemData values('Gear Oil Change',150,150,150) insert into It

我在SQL Server中有一个名为ItemData的表,如下所示

Create Table ItemDate( ItemName VARCHAR(50), Hyundai int,[I10/ I20] int,Maruti int);
insert into ItemData values('Coolant Change',150,150,150)
insert into ItemData values('Gear Oil Change',150,150,150)
insert into ItemData values('Brake Oil Change',350,200,200)
现在我想查询要插入到此表中的表

Create Table Result( ItemName VARCHAR(50), ModelName VARCHAR(50), Rate int);
其中型号名称为现代、I10/I20和Maruti
请帮助我

一种方法是使用
unpivot
来实现这一点。 请尝试以下操作:

insert into Result
select ItemName, ModelName, Rate
from 
(
    select ItemName, Hyundai, [I10/ I20], Maruti
    from ItemData
)t
unpivot
(
    Rate for ModelName in ([Hyundai], [I10/ I20], [Maruti])
)upvt

请查找DBFIDLE

您的表ItemDate不正确,插入不正确。。。你测试过你的代码吗?有很多东西需要理解。1.表名为“ItemDate”,而insert为“ItemData”2。与150入门级相比,现代[I10/I20]是什么。它完全不匹配。建议是,首先写下什么是表数据,什么是输出数据。其次,使用匹配数据编写表结构。所以我们可以理解你的问题