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