Как объединить два результата запроса в одну строку?

У меня есть два запроса, которые возвращают один результат каждый i.e одно число

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

Результаты

StockCountA 
550

.

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

Результаты

StockCountB 
450

Я хочу объединить два результата в одну запись строки i.e

| StockCountA | StockCountB    
| 550         | 450

Ответ 1

Ты можешь использовать:

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
  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

Ответ 2

Это даст вам желаемый результат:

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

Ответ 3

Попробуйте выполнить SQL:

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

Надеюсь, что это поможет:)

Ответ 4

Хотя не всегда лучшая практика, возможно сделать CROSS JOIN..

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'