Kev*_* M. 5 sql sql-server-2008
我遇到这个问题很困难.
我有一个这种结构的表:
OrderID | Manager | Worker
1 | John | Sally
2 | Tim | Kristy
Run Code Online (Sandbox Code Playgroud)
我需要一个SQL查询来获取这样的结果集:
OrderID | Employee
1 | John
1 | Sally
2 | Tim
2 | Kristy
Run Code Online (Sandbox Code Playgroud)
这有可能执行吗?
我能想到的最简单的方法是(假设你不关心Tim是否在Kristy之前或之后被列出):
SELECT OrderID, Employee = Manager FROM dbo.table
UNION ALL
SELECT OrderID, Employee = Worker FROM dbo.table
ORDER BY OrderID;
Run Code Online (Sandbox Code Playgroud)
如果订单很重要,并且您希望经理先行,那么:
SELECT OrderID, Employee FROM
(
SELECT r = 1, OrderID, Employee = Manager
FROM dbo.Table
UNION ALL
SELECT r = 2, OrderID, Employee = Worker
FROM dbo.table
) AS x
ORDER BY OrderID, r;
Run Code Online (Sandbox Code Playgroud)