如何使用单个查询获取列数

时间:2019-02-26 05:36:14

标签: mysql sql

我的数据库中有一个表,我想根据计数从中获取数据

我的表名是syncbill,列是CancelledNoofprints,我试图写一个查询来获取cancelled和{{1}的计数}使用单个查询

  • 对于已取消,我想在已取消的地方获取已取消的计数<> noofbills
  • 对于Noofprints,我想获取Y的数量,其中noofprints> 1

我正在使用

noofprints

此查询,但它为我提供了相同的计数

This is my data base table <code>syncbill</code>

任何人在这里都请指导我

3 个答案:

答案 0 :(得分:2)

您可以将sum()与大小写一起使用

SELECT
    sum(CASE WHEN CANCELLED <> 'Y' THEN 1 else 0 END) AS canceledbill,
    sum(CASE WHEN NOOFPRINTS > 1 THEN 1  else 0 END)   AS duplicatebill
FROM table_name;

答案 1 :(得分:1)

使用条件聚合:

SELECT
    COUNT(CASE WHEN CANCELLED <> 'Y' THEN 1 END) AS cancelledbill,
    COUNT(CASE WHEN NOOFPRINTS > 1 THEN 1 END)   AS duplicatebill
FROM yourTable;

如果您实际使用的是MySQL,则可以将以上内容简化为:

SELECT
    SUM(CANCELLED <> 'Y') AS cancelledbill,
    SUM(NOOFPRINTS > 1)   AS duplicatebill
FROM yourTable;

答案 2 :(得分:0)

使用CASE WHEN表达式

select 
    sum(case when CANCELLED <> 'Y' then 1 else 0 end) AS cancelledbill,
    sum(case when NOOFPRINTS > 1 then 1 else 0 end)   AS duplicatebill
FROM tablename;