【发布时间】:2013-04-08 22:49:58
【问题描述】:
我有一种情况,它处理具有不同列的两组数据。我知道我可以使用 UNION 但 UNION 要求两个表中的表达式数量相等。我试图在我的存储过程中加入这两个语句。第一条语句有一个额外的列“位置”
Select
TableA.Name,
TableB.Occupation,
TableA.Location,
'Group1' AS [groupBy]
From
TableA,
TableB
Where
TableA.ID = 1
Select
TableA.Name,
TableB.Occupation,
'Group2' AS [groupBy]
From
TableA,
TableB
Where
TableB.ID = 10
我的结果应该是这样的
Name Occupation GroupBy Location
David Doctor Group1 USA
John Pilot Group1 Asia
Dwayne Wrestler Group2 NULL
Axel RockStar Group2 NULL
我的表结构
Table A
ID Name Occupation Location
1 David Doctor USA
1 John Pilot Asia
2 Mike Clerk Europe
Table B
ID Name Occupation
3 Wayne Writer
4 Shane Publisher
10 Dwayne Wrestler
10 Axel Rockstar
【问题讨论】:
-
这叫做UNION;只需在第二个查询中手动将“,NULL”添加到选择列表中。
-
嗨彼得...感谢您的评论。如果有超过 1 列会发生什么。我知道我已经看到有些人在存储过程中做了不同的事情,他们在 sp 中创建了一个临时表
-
根据需要添加任意数量的文件,无论您在哪里需要。如果您需要两个表中的其他列,则第一个表中的 NULL 实例必须使用适当的列名作为别名。
-
谢谢 Pieter... 有没有办法可以将此问题标记为已解决?
-
你需要停止使用隐式语法,它是一种 SQL 反模式,比显式连接更容易出错并且更难维护。再加上他们在上个世纪被替换了,看在上帝的份上!
标签: sql-server-2008 select stored-procedures