2017-02-07 2 views
0

У меня есть данные в следующем формате:Выберите 2 колонки в 2-х строк в SQL запросе

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 для этого

спасибо

ответ

1
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 
+0

я попытался это, но Союз все изменяет последовательность. i напечатать имя Compoany, затем имя поставщика для некоторых строк и отменить последовательность для некоторых других строк –

+0

Проверить отредактированный ответ, столбец тега, используемый в ORDER, будет означать, что имя Comapy Name будет первым, а затем VendorName для каждого ID –

+0

Для каких строк вы хотите последовательность изменена? Укажите, что означает –

0

Попробуйте

SELECT ID, [Vendor Name] from table 
union all 
SELECT ID, [Company Name] from table 
Order by ID 
0

Попробуйте это поможет

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 
0

Вы можете установить, чтобы сохранить последовательность.

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 
0

С помощью кросс применять и NTILE также мы можем достичь

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 
Смежные вопросы