如何正确组合SQL标量?



有几个查询只返回一行和一列,如何将它们合并到一个结果集中?

的例子:

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

最新更新