加入两个选择 - 不同的列名

时间:2016-07-18 12:56:09

标签: sql-server tsql union

我需要构建一个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信息的列。

感谢您的任何建议!

2 个答案:

答案 0 :(得分: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')

答案 1 :(得分:1)

我想出了这个。

我只使用了6个select语句,每个语句都给它们一个别名和一个唯一的ID(项目ID为Select_1_ID,Select_2_ID),并使用Select 1的ID将它们左右连接在一起。

相当啰嗦但它有效 - 我怀疑它不是非常有效,谢天谢地它只返回24k行。