有几个查询只返回一行和一列,如何将它们合并到一个结果集中?
的例子:
SELECT TOP 1 [col1]
FROM [table]
WHERE con1 = true
ORDER BY [col1] DESC
SELECT TOP 1 [col1]
FROM [table]
WHERE con2 = true
ORDER BY [col1] DESC
我可以这样做:
SELECT TOP 1
(SELECT TOP 1 [col1] FROM [table]
WHERE con1 = true
ORDER BY [col1] DESC) AS 'Res1',
(SELECT TOP 1 [col1] FROM [table]
WHERE con2 = true
ORDER BY [col1] DESC) AS 'Res2'
FROM [table]
然而,没有必要将结果组合为列,行中的结果也可以,甚至可以作为串联,如果有任何意义的话,但也许列已经是更好的方式。
我使用SQL Server
如果两个查询的输出字段相同,则使用UNION
运算符
Query 1
Union
Query 2
正如我在评论中提到的,没有必要的FROM
外查询;只要有你的两个子查询:
SELECT (SELECT TOP (1)
col1
FROM dbo.[table]
WHERE con1 = 1 --Boolean data types don't exists in SQL Server; I assume this is a bit
ORDER BY col1 DESC) AS Res1, --Don't use string literals for aliases
(SELECT TOP (1)
col1
FROM dbo.[table]
WHERE con2 = 1 --Boolean data types don't exists in SQL Server; I assume this is a bit
ORDER BY col1 DESC) AS Res2; --Don't use string literals for aliases