繁体   English   中英

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

[英]How to combine two query's results into one row?

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

Select Count(*) as StockCountA from Table_A where dept='AAA'

结果

StockCountA 
550

Select Count(*) as StockCountB from Table_B where dept='BBB'

结果

StockCountB 
450

我希望将两个结果合并为一行记录,即

| StockCountA | StockCountB    
| 550         | 450

您可以使用:

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

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

select
  x.*,
  (select Value from Table_Y y) as ValueFromY
from
  Table_X x

这仅适用于标量查询 ,这意味着子查询应具有恰好1列,最多1行。 如果行数为0,则ValueFromY将返回NULL ;如果行数超过1,则查询将失败。

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

Select
  3.14 as MoreOrLessPI

您可以通过编写如下查询来将这两个事实结合起来,将两个计数结合为一个结果:

Select
  (Select query that returns at most 1 row) as Result1,
  (Select another query that returns at most 1 row) as Result2

这应该给您期望的结果:

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

试试下面的SQL:

select (Select Count(*) as StockCountA from Table_A where dept='AAA')  StockCountA, 
       (Select Count(*) as StockCountB from Table_B where dept='BBB')  StockCountB

希望这可以帮助 :)

虽然并非总是最佳做法,但可以进行交叉加入。

SELECT
COUNT(Table_A.SOME_COLUMN) as StockCountA
,COUNT(Table_B.SOME_COLUMN) as StockCountB
FROM Table_A, Table_B WHERE Table_A.dept='AAA' AND Table_B.dept='BBB'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM