我想知道是否可以在单个select语句中选择两个具有不同条件的值。我知道我可以使用子查询来实现上述目的,只是想知道是否有更有效的方法来实现它。
请考虑下表:
const url = 'https://...';
fetch(url, {
method: 'DELETE'
});
我希望选择用户总数以及本月加入的用户总数。我可以通过两个查询来做到这一点:
UserId | CreatedDate
1 | 2018-01-21
2 | 2018-02-21
3 | 2018-03-21
4 | 2018-11-21
5 | 2018-11-21
但是,这是否可以作为两个查询的单一选择?
编辑:为消除混乱,我正在寻找2列,而不是两行。
答案 0 :(得分:3)
我相信这会满足您的需求
const express = require("express");
const app = express();
const courses = [
{ id: 1, name: "courses2" },
{ id: 2, name: "courses2" },
{ id: 3, name: "courses2" }
];
app.get("/", (req, res) => {
res.send("Hello Word");
});
app.get("/api/courses", (req, res) => {
req.send(courses);
});
答案 1 :(得分:2)
使用条件聚合:
SELECT COUNT(*),
SUM(CASE WHEN MONTH(CreatedDate) = MONTH(GETDATE()) AND YEAR(CreatedDate) = YEAR(GETDATE()) THEN 1 ELSE 0 END)
FROM [Users];
注意:MONTH[CreatedDate]
毫无意义,所以我用括号替换了方括号。
答案 2 :(得分:1)
这是一种方法
(这将为您提供两行,如果您希望两列,其他人已使用CASE显示了该解决方案)
localhost