要插入countif的SQL语法

问题描述 投票:0回答:1

我有一张桌子(tbl2)i have 4 columns with feedback attributes listed。我需要生成一个数据透视表,如mysql中的语法。需要类似pivot table的输出。我目前正在尝试

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中解决此问题吗?

sql pivot-table countif
1个回答
0
投票

我认为您想要这样的逻辑:

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'
© www.soinside.com 2019 - 2024. All rights reserved.