Суммируйте количество столбцов, используя подзапросы в списке SELECT - PullRequest
0 голосов
/ 10 сентября 2018

Я создаю таблицу, в которой содержится общее количество строк в трех других таблицах, а затем вычисляю итоговые значения всех вместе взятых.

Пока у меня есть:

SELECT (SELECT COUNT(*) FROM T1) T1,
       (SELECT COUNT(*) FROM T2) T2,
       (SELECT COUNT(*) FROM T3) T3,
       (SELECT (T1+T2+T3)) TOTAL

Однако я получаю сообщение об ошибке, в котором говорится, что T1, T2 и T3 являются недопустимыми именами столбцов. Если я удаляю ВСЕ подзапрос, тогда он выполняется нормально.

Есть идеи, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Вы не можете использовать определение псевдонима и использовать в том же выборе. Вместо этого используйте этот скрипт:

SELECT T1, T2, T3, T1+T2+T3 AS TOTAL
FROM (  
   SELECT (SELECT COUNT(*) FROM T1) T1,
          (SELECT COUNT(*) FROM T2) T2,
          (SELECT COUNT(*) FROM T3) T3
   ) AS tbl
0 голосов
/ 10 сентября 2018

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

WITH t AS (
     SELECT (SELECT COUNT(*) FROM T1) T1,
            (SELECT COUNT(*) FROM T2) T2,
            (SELECT COUNT(*) FROM T3) T3
)

SELECT T1, T2, T3, (T1 + T2 + T3) AS TOTAL
FROM t;  
...