Mysql 在单个查询中添加多个where子句

Mysql 在单个查询中添加多个where子句,mysql,sql,node.js,Mysql,Sql,Node.js,我想从Node.js运行SQL查询。我想显示4个季度中每个季度具有特定状态的项目总数 这是我两个季度的代码: SELECT SUM(CurrentStatus = 'On Hold') onHold_Q1, SUM(CurrentStatus = 'In Progress') inProgress_Q1, SUM(CurrentStatus = 'Not Started') notStarted_Q1, SUM(CurrentStatus = 'Completed') completed_Q1,

我想从Node.js运行SQL查询。我想显示4个季度中每个季度具有特定状态的项目总数

这是我两个季度的代码:

SELECT
SUM(CurrentStatus = 'On Hold') onHold_Q1,
SUM(CurrentStatus = 'In Progress') inProgress_Q1,
SUM(CurrentStatus = 'Not Started') notStarted_Q1,
SUM(CurrentStatus = 'Completed') completed_Q1,
SUM(CurrentStatus = 'Routine Activity') routineActivity_Q1,
SUM(CurrentStatus = 'Done But Not Published') doneButNotPublished_Q1
FROM office.officedata
WHERE Quarter = 'Q1';

SELECT
SUM(CurrentStatus = 'On Hold') onHold_Q2,
SUM(CurrentStatus = 'In Progress') inProgress_Q2,
SUM(CurrentStatus = 'Not Started') notStarted_Q2,
SUM(CurrentStatus = 'Completed') completed_Q2,
SUM(CurrentStatus = 'Routine Activity') routineActivity_Q2,
SUM(CurrentStatus = 'Done But Not Published') doneButNotPublished_Q2
FROM office.officedata
WHERE Quarter = 'Q2'; 

我想将上述两个查询合并为一个查询。因为,我将从backend Node.js运行这个查询,所以我希望在一个请求中同时获得所有季度的数据。我不想向mySQL发送多个请求。我该怎么做?

您可以按季度分组:

SELECT Quarter,
    SUM(CurrentStatus = 'On Hold') onHold,
    SUM(CurrentStatus = 'In Progress') inProgress,
    SUM(CurrentStatus = 'Not Started') notStarted,
    SUM(CurrentStatus = 'Completed') completed,
    SUM(CurrentStatus = 'Routine Activity') routineActivity,
    SUM(CurrentStatus = 'Done But Not Published') doneButNotPublished
FROM office.officedata
WHERE Quarter in ('Q1', 'Q2')
GROUP BY Quarter;

这将每季度生成一行,值以列为单位。虽然可以通过更多的输入将所有内容放在同一行中!,我发现这个结果更有用。

您可以按季度分组:

SELECT Quarter,
    SUM(CurrentStatus = 'On Hold') onHold,
    SUM(CurrentStatus = 'In Progress') inProgress,
    SUM(CurrentStatus = 'Not Started') notStarted,
    SUM(CurrentStatus = 'Completed') completed,
    SUM(CurrentStatus = 'Routine Activity') routineActivity,
    SUM(CurrentStatus = 'Done But Not Published') doneButNotPublished
FROM office.officedata
WHERE Quarter in ('Q1', 'Q2')
GROUP BY Quarter;
这将每季度生成一行,值以列为单位。虽然可以通过更多的输入将所有内容放在同一行中!,我发现这个结果更有用。

您想使用

你想使用


FWIW,我不会将不同季度的“Q”数据存储在同一列下,或者将每个季度的数据存储在不同列中?FWIW,我不会将不同季度的“Q”数据存储在同一列下,或者将每个季度的数据存储在不同列中?谢谢。非常感谢您的支持。只是让你知道。这不是100%等同于您的两个查询。即使没有季度数据,查询也会返回一行。这将返回0、1或2行,具体取决于数据是否存在。这可能是你想要的,但不是100%相等。谢谢。非常感谢您的支持。只是让你知道。这不是100%等同于您的两个查询。即使没有季度数据,查询也会返回一行。这将返回0、1或2行,具体取决于数据是否存在。这可能是你想要的,但它不是100%等价的。