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

у меня есть два запроса, которые возвращают один результат каждый 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

4 ответов


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

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 строки. С 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'