简体   繁体   English

SQL查询:检索具有不同条件的列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM