SQL синтаксис для вставки - PullRequest
       29

SQL синтаксис для вставки

1 голос
/ 05 апреля 2020

У меня есть таблица (tbl2) У меня есть 4 столбца с перечисленными атрибутами обратной связи . Мне нужно создать сводную таблицу, как синтаксис в mysql. Нужен вывод примерно так: сводная таблица . В настоящее время я пытаюсь это

INSERT INTO 1 (`BAD/GOOD`, `PRICE YES`, `PRICE NO`, `TOTAL PRICE`) SELECT "BAD",COUNT(*) WHERE tbl2.PRICE="BAD" AND tbl2.Churn="YES",COUNT(*) WHERE tbl2.PRICE="BAD" AND tbl2.Churn="NO",COUNT(*) WHERE tbl2.PRICE="BAD" FROM tbl2_customers_churn

, а также пытался вставить в качестве значений

INSERT INTO 1 VALUES ("BAD",COUNT(*) FROM tbl2 WHERE tbl2.PRICE="BAD" AND tbl2.Churn="YES",COUNT(*) FROM tbl2 WHERE tbl2.PRICE="BAD" AND tbl2.Churn="NO",COUNT(*) FROM tbl2 WHERE tbl2.PRICE="BAD")

для плохого и хорошего счета отдельно

Любые советы о том, как справиться с этим в SQL

1 Ответ

0 голосов
/ 05 апреля 2020

Я думаю, вам нужна логика c больше похоже на это:

INSERT INTO 1 (`BAD/GOOD`, `PRICE YES`, `PRICE NO`, `TOTAL PRICE`)
    SELECT 'BAD',
            SUM(CASE WHEN tbl2.PRICE = 'BAD' AND tbl2.Churn = 'YES' THEN 1 ELSE 0 END),
            SUM(CASE WHEN tbl2.PRICE = 'BAD' AND tbl2.Churn = 'NO' THEN 1 ELSE 0 END),
            SUM(CASE WHEN tbl2.PRICE = 'BAD' THEN 1 ELSE 0 END)
    FROM tbl2_customers_churn tbl2;

Или чуть проще:

    SELECT 'BAD',
            SUM(CASE WHEN tbl2.Churn = 'YES' THEN 1 ELSE 0 END),
            SUM(CASE WHEN tbl2.Churn = 'NO' THEN 1 ELSE 0 END),
            COUNT(*)
    FROM tbl2_customers_churn tbl2
    WHERE tbl2.PRICE = 'BAD'
...