在sql查询中选择2行中的2列
我有以下格式的数据:在sql查询中选择2行中的2列,sql,sql-server,Sql,Sql Server,我有以下格式的数据: ID Vendor Name Company Name 1 VendorA CompanyA 2 VendorB CompanyB 3 VendorC CompanyC 我想要下面的格式 ID CompanyDetails
ID Vendor Name Company Name
1 VendorA CompanyA
2 VendorB CompanyB
3 VendorC CompanyC
我想要下面的格式
ID CompanyDetails
1 CompanyA
1 VendorA
2 CompanyB
2 VendorB
3 CompanyC
3 Vendor C
我用过工会,但没用,
请帮助我为此编写sql脚本
谢谢试试这个
SELECT ID, CompanyDetails
FROM
(
SELECT ID, VendorName As CompanyDetails, 2 as Tag
FROM tableName
UNION ALL
SELECT ID, CompanyName, 1 As Tag
FROM tableName
) Z
ORDER BY ID, Tag
SELECT ID, [Vendor Name] from table
union all
SELECT ID, [Company Name] from table
Order by ID
试试这个,它会帮你的
select * into #tab from(
select 1 ID, 'VendorA' as [Vendor Name], 'CompanyA' [CompanyName]
union all
select 2, 'VendorB', 'CompanyB'
union all
select 3, 'VendorC', 'CompanyC'
)as a
select id,[Vendor Name] from #tab
union all
select id,[CompanyName] from #tab
order by ID
您可以设置顺序以保持顺序
SELECT ID, CompanyDetails
FROM (
SELECT ID, CompanyName AS CompanyDetails, 1 AS Ord
FROM #table
UNION
SELECT ID, VendorName, 2 AS Ord
FROM #table
) A
ORDER BY ID, Ord
通过使用交叉应用和NTIL,我们也可以实现
Select ID,CompanyDetails
from (
Select NTILE(6)OVER(PARTITION BY COL ORDER BY COL DESC )ID ,
T.VAL As CompanyDetails
from (
select COL,VAL from #Table1
CROSS APPLY(VALUES
('Vendorname',[Vendor Name]),
('CompanyName',[CompanyName]))CS(COL,VAL))T)TT
ORDER BY ID
我已经试过了,但联盟都改变了顺序。对于某些行,我先打印company Name,然后打印Vendor Name,对于其他一些行,我将按顺序反转rowsCheck edited answer,顺序中使用的标记列将首先显示Comapy Name,然后再显示VendorName。对于每个IDF,您希望更改顺序的行是什么?具体说明dou的意思