一行sql中有多个where子句

一行sql中有多个where子句,sql,count,where,Sql,Count,Where,我想把下面的语句合并成一个查询 SELECT COUNT(*) AS count1 WHERE Month='11' AND Flag = 1 SELECT COUNT(*) AS count2 WHERE Month='11' AND Flag = 2 SELECT COUNT(*) AS count1 WHERE Month='12' AND Flag = 1 SELECT COUNT(*) AS count2 WHERE Month='12' AND Flag = 2 我想将其显

我想把下面的语句合并成一个查询

SELECT COUNT(*) AS count1 WHERE Month='11' AND Flag = 1
SELECT COUNT(*) AS count2 WHERE Month='11' AND Flag = 2
SELECT COUNT(*) AS count1 WHERE Month='12' AND Flag = 1
    SELECT COUNT(*) AS count2 WHERE Month='12' AND Flag = 2
我想将其显示为一个查询,列为count1和count2,行为month 11和month 12

这个有语法吗?

这个怎么样:

select
    month, flag, count(*)
from
    table
where
    month in ('11', '12') and
    flag in (1, 2)
group by
    month, flag;
只有两列,它可以是这样的:

select
   (SELECT COUNT(*) FROM tablename WHERE Month='11' AND Flag = 1) as 'count1'
   (SELECT COUNT(*) FROM tablename WHERE Month='11' AND Flag = 2) as 'count2'

UNION ALL

select
   (SELECT COUNT(*) FROM tablename WHERE Month='12' AND Flag = 1), 
   (SELECT COUNT(*) FROM tablename WHERE Month='12' AND Flag = 2)
将tablename替换为您的表名。

您可以将总和和大小写结合起来,一次性获得各种计数:

SELECT
    Month,
    SUM(CASE WHEN Flag=1 THEN 1 ELSE 0 END) as count1,
    SUM(CASE WHEN Flag=2 THEN 1 ELSE 0 END) as count2
from
    ...
WHERE Month in ('11','12')
GROUP BY
    Month /* Other columns? */

OP只需要两列。@af,它不能在两列中完成,并且仍然能够分辨每个计数的月份。我使用了这个的一个变体,得到了两列,一列为月份。这就是我所需要的。为什么月份是一个字符串?@Damien_不相信这个数据是一个excel表格导入,里面有很多垃圾数据。我最初将所有内容都作为字符串拉入,这样我就可以开始将数据清理成更易于管理的格式。但是op希望每个计数有一列,并且只有两行,他只是想在之后用一些代码处理输出。我的意思是,谁在他们的输出中使用未触及的原始SQL?也许这是我的臆断…:@alexhowansky我实际上将使用原始的非接触式SQL。这与其说是一个应用程序,不如说是一个快速报告。我只需要拉取数据,如果我能快速且以格式完成,就不需要手动将其调整为我正在寻找的格式。也许您缺少了一个,在每行的末尾,它应该是SELECT COUNT FROM tablename,其中MOUNT='11'和Flag=1为'count1',从tablename中选择COUNT,其中Month='11'和Flag=2为'count2'