[英]SQL Query: Retrieve columns with different condition
I need to retrieve multiple columns with different condition from the different table. 我需要从不同的表中检索具有不同条件的多个列。 What i have as below
我有如下
SELECT
(SELECT COUNT(*) FROM Table1 WHERE Price >= 0 Price < 10) AS 'Group1',
(SELECT COUNT(*) FROM Table1 WHERE Price >= 10 AND Price < 20) AS 'Group2',
(SELECT COUNT(*) FROM Table1 WHERE Price >= 20 AND Price < 30) AS 'Group3',
(SELECT COUNT(*) FROM Table2 WHERE Price >= 0 Price < 10) AS 'Group4',
(SELECT COUNT(*) FROM Table2 WHERE Price >= 10 AND Price < 20) AS 'Group5',
(SELECT COUNT(*) FROM Table2 WHERE Price >= 20 AND Price < 30) AS 'Group6'
Just wonder is there any better way to restructure a better query for above condition? 只是想知道是否有更好的方法来为上述条件重组更好的查询?
There is, 有,
SELECT SUM(CASE WHEN Price >= 0 Price < 10 THEN 1 END) AS 'Group1',
SUM(CASE WHEN Price >= 10 AND Price < 20 THEN 1 END) AS 'Group2',
SUM(CASE WHEN Price >= 20 AND Price < 30 THEN 1 END) AS 'Group3',
SUM(CASE WHEN Price >= 0 Price < 10 THEN 1 END) AS 'Group4',
SUM(CASE WHEN Price >= 10 AND Price < 20 THEN 1 END) AS 'Group5',
SUM(CASE WHEN Price >= 20 AND Price < 30 THEN 1 END) AS 'Group6'
FROM table2
Adding up table1 to the above wonderful query by J W. 由J W将table1加到上述精彩查询中。
SELECT SUM(CASE WHEN T1.Price >= 0 Price < 10 THEN 1 END) AS 'Group1',
SUM(CASE WHEN T1.Price >= 10 AND Price < 20 THEN 1 END) AS 'Group2',
SUM(CASE WHEN T1.Price >= 20 AND Price < 30 THEN 1 END) AS 'Group3',
SUM(CASE WHEN T2.Price >= 0 Price < 10 THEN 1 END) AS 'Group4',
SUM(CASE WHEN T2.Price >= 10 AND Price < 20 THEN 1 END) AS 'Group5',
SUM(CASE WHEN T2.Price >= 20 AND Price < 30 THEN 1 END) AS 'Group6'
FROM table1 T1, table2 T2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.