如何将两个查询的结果合并为一行?

Ros*_*bud 14 sql sql-server

我有两个查询,每个返回一个结果,即一个数字

Select Count(*) as StockCountA from Table_A where dept='AAA'
Run Code Online (Sandbox Code Playgroud)

结果

StockCountA 
550
Run Code Online (Sandbox Code Playgroud)

.

Select Count(*) as StockCountB from Table_B where dept='BBB'
Run Code Online (Sandbox Code Playgroud)

结果

StockCountB 
450
Run Code Online (Sandbox Code Playgroud)

我希望将这两个结果加入一行记录,即

| StockCountA | StockCountB    
| 550         | 450
Run Code Online (Sandbox Code Playgroud)

Gol*_*rol 37

您可以使用:

select
(Select Count(*) as StockCountA from Table_A where dept='AAA') as StockCountA,
(Select Count(*) as StockCountB from Table_B where dept='BBB') as StockCountB
Run Code Online (Sandbox Code Playgroud)

说明:您可以选择单个值作为select语句中的字段,因此您可以编写类似的内容

select
  x.*,
  (select Value from Table_Y y) as ValueFromY
from
  Table_X x
Run Code Online (Sandbox Code Playgroud)

这仅在子查询返回最多1行时才有效.如果返回0行,则ValueFromY将返回NULL并且超过1行,查询将失败.

select(在SQL Server,MySQL和其他可能的版本中)的另一个特性是,您可以只选择值而不指定表,如下所示:

Select
  3.14 as MoreOrLessPI
Run Code Online (Sandbox Code Playgroud)

通过编写如下所示的查询,您可以将这两个事实组合在一起,将两个计数合并为一个结果:

Select
  (Select query that returns at most 1 row) as Result1,
  (Select another query that returns at most 1 row) as Result2
Run Code Online (Sandbox Code Playgroud)

  • 是的,这就是为什么我决定添加一些解释。很难找到正确的文档,我不知道该找什么。:) (2认同)

Dar*_*hta 6

这应该会给你想要的结果:

SELECT * FROM(
(Select Count(*) as StockCountA from Table_A where dept='AAA') StockCountA ,
(Select Count(*) as StockCountB from Table_B where dept='BBB') StockCountB
);
Run Code Online (Sandbox Code Playgroud)