2016-07-18 1 views
1

Мне нужно построить инструкцию SELECT, отображающую все столбцы для JV1 - JV6.Присоединение к двум выборкам - разные имена столбцов

Как мне получить JV2, JV3 и т. Д.?

SELECT 
Id as [JV1], 
vp_pct as [JV1 Per], 
vl_role as [JV1 Role], 
[status] as [JV1 Status] 
FROM era_project_allications_m 
WHERE era_project_allications_m.jv_row_id = '1' 
UNION ALL 
SELECT 
Id as [JV2], 
vp_pct as [JV2 Per], 
vl_role as [JV2 Role], 
[status] as [JV2 Status] 
FROM era_project_allications_m 
WHERE era_project_allications_m.jv_row_id = '2' 

Мне нужны результаты для отображения столбцов, содержащих информацию JV1, JV2.

Спасибо за любой совет!

+1

Вам действительно нужно предоставить некоторые детали здесь, чтобы люди могли помочь. Похоже, вы хотите использовать кросс-вкладку или PIVOT. –

+0

не могли бы вы вставить как текст, изображения будут заблокированы в некоторых доменах – TheGameiswar

+0

Присоединиться к объединению - это две разные вещи. У вас не может быть разных имен столбцов в объединении, но вы можете добавить столбец, в котором будет храниться имя исходной таблицы (жестко закодированное), чтобы помочь вам понять, откуда взялась строка. –

ответ

1

Я изобразил это.

Я просто использовал 6 операторов выбора, указав им каждый псевдоним и уникальный идентификатор (ID проекта, как Select_1_ID, Select_2_ID), и LEFT JOIN'd их вместе, используя идентификатор Select 1).

Скорее длинный, но он работает. Я подозреваю, что он не очень эффективен, хотя, к счастью, он возвращает только 24 тыс. Строк.

4

Присоединение и объединение - это две разные вещи. Вы не можете иметь разные имена столбцов в союзе, но вы можете добавить столбец, который будет содержать имя исходной таблицы (жесткий кодированный), чтобы помочь вам понять, где строка приходит от:

SELECT 
Id, 
vp_pct, 
vl_role, 
[status], 
'1' as sourceId 
FROM era_project_allications_m 
WHERE jv_row_id = '1' 

UNION ALL 

SELECT 
Id, 
vp_pct, 
vl_role, 
[status], 
'2' 
FROM era_project_allications_m 
WHERE jv_row_id = '2' 

хотя и основаны на примере коде вы можете просто хотеть это сделать:

SELECT 
Id, 
vp_pct, 
vl_role, 
[status], 
jv_row_id as sourceId 
FROM era_project_allications_m 
WHERE jv_row_id IN('1', '2'...'n') 
+0

Мне нужно отображать каждую строку на основе ее jv_row_id в разных столбцах. – Justin