用 Sql 服务器中的列数据替换行
Replace row with Column Data in Sql Server
我有一个 table 和一些数据,我试图用行替换列。
SELECT Handset_UID, [IMEI_NO_1] AS [IMEI #1],[IMEI_NO_2] AS [IMEI #2],
Isnull(Convert(varchar,Mfg_Date,106),'Not Found') as [Mfg. Date]
FROM stock.Handset a
join Stock.Model b
on a.Model_ID = b.Model_ID
JOIN Stock.Brand C
ON A.Brand_ID = C.Brand_ID
where a.Handset_UID = 'GFI13508637275434'
上面的查询给出了单行数据的结果。
但我想要以下格式的结果
我尝试过使用派生列的数据透视运算符,但在实施过程中感到困惑。
请帮助获得正确的查询。
假设您是 运行 SQL 服务器,如语法所示,您可以使用 cross apply
:
取消透视
select x.col, x.val
from stock.handset h
inner join stock.model m on h.model_id = m.model_id
inner join stock.brand b on on h.brand_id = b.brand_id
cross apply (values
('handset_uid', handset_uid),
('IMEI #1', imei_no_1),
('IMEI #2', imei_no_2),
('Mfg.Date', convert(varchar, Mfg_Date, 106), 'Not Found')
) x(col, val)
where h.handset_uid = 'gfi13508637275434'
旁注:
有意义的table别名使查询更易于读写
你的查询有很多列没有用它们所属的 table 的别名限定,这使得你的查询对底层结构相当不清楚;我强烈建议您限定查询中的所有列
我有一个 table 和一些数据,我试图用行替换列。
SELECT Handset_UID, [IMEI_NO_1] AS [IMEI #1],[IMEI_NO_2] AS [IMEI #2],
Isnull(Convert(varchar,Mfg_Date,106),'Not Found') as [Mfg. Date]
FROM stock.Handset a
join Stock.Model b
on a.Model_ID = b.Model_ID
JOIN Stock.Brand C
ON A.Brand_ID = C.Brand_ID
where a.Handset_UID = 'GFI13508637275434'
上面的查询给出了单行数据的结果。
但我想要以下格式的结果
我尝试过使用派生列的数据透视运算符,但在实施过程中感到困惑。
请帮助获得正确的查询。
假设您是 运行 SQL 服务器,如语法所示,您可以使用 cross apply
:
select x.col, x.val
from stock.handset h
inner join stock.model m on h.model_id = m.model_id
inner join stock.brand b on on h.brand_id = b.brand_id
cross apply (values
('handset_uid', handset_uid),
('IMEI #1', imei_no_1),
('IMEI #2', imei_no_2),
('Mfg.Date', convert(varchar, Mfg_Date, 106), 'Not Found')
) x(col, val)
where h.handset_uid = 'gfi13508637275434'
旁注:
有意义的table别名使查询更易于读写
你的查询有很多列没有用它们所属的 table 的别名限定,这使得你的查询对底层结构相当不清楚;我强烈建议您限定查询中的所有列