Соединение двух выборок - разные имена столбцов

sql-server tsql union

51 просмотра

2 ответа

76 Репутация автора

Мне нужно построить оператор 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.

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

Автор: Justin Источник Размещён: 18.07.2016 12:56

Ответы (2)


4 плюса

63848 Репутация автора

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

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')
Автор: Zohar Peled Размещён: 18.07.2016 01:08

1 плюс

76 Репутация автора

Решение

Я понял это.

Я просто использовал 6 операторов select, присваивая им псевдонимы и уникальные идентификаторы (идентификатор проекта как Select_1_ID, Select_2_ID), и LEFT СОЕДИНЯЛ их вместе, используя идентификатор Select 1).

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

Автор: Justin Размещён: 18.07.2016 02:04
Вопросы из категории :
32x32