У меня есть 3 таблицы:
- TableA
- TableB
- TableC
Мне нужно выполнить несколько агрегатных функций(COUNT и SUM) по некоторым столбцам из них.
Я не нашел способа объединить их (даже с приведенным ниже столбцом ClientId), поэтому я попытался:
SELECT
(SELECT COUNT(*) FROM TableA
WHERE ClientId = 2 AND IsDisabled != 1 AND IsDeleted != 1) AS ColumnName1,
(SELECT COUNT(*) FROM TableB
WHERE ClientId = 2 AND DisabledWhen IS NULL) AS ColumnName2,
(SELECT COUNT(*) FROM TableC
WHERE ClientId = 2 AND TDate >= CURRENT_TIMESTAMP -30) AS ColumnName3,
(SELECT SUM(TPrice + COALESCE (PPrice,0)) FROM TableC
WHERE ClientId = 2 AND TDate >= CURRENT_TIMESTAMP -30) AS ColumnName4;
, и это работает, результат:
+--------------+-------------+-------------+--------------+
| ColumnName1 | ColumnName2 | ColumnName3 | ColumnName4 |
+--------------+-------------+-------------+--------------+
| 202 | 86 | 25 | 4574.0000 |
+--------------+-------------+-------------+--------------+
но я хочу объединить последние два подзапроса в один подзапрос.
Итак, я попытался сделать это:
(SELECT COUNT(*) AS ColumnName3, SUM(TPrice + COALESCE (PPrice,0)) AS ColumnName4 FROM TableC
WHERE ClientId = 2 AND TDate >= CURRENT_TIMESTAMP -30);
но я получаю эту ошибку:
В списке выбора можно указать только одно выражение, если подзапрос не введен. EXISTS .
Как получить несколько столбцов из одного подзапроса?
и как эффективно выполнить вышеуказанный запрос?