SQL 查询 When Then 并计数
SQL Query for When Then and Count
我有一个table
ID |Code |Start |End
1 | SKX007| 2020-06-01|2020-06-11
2 | SRP120| 2020-05-01|2020-05-01
3 | SKX454| 2020-05-01|2020-06-21
4 | SKX471| 2020-06-11|2020-06-15
我想知道在哪里打印代码的前 3 个字母以及它的计数从 jun 开始或结束。
Code |"Count Code in June"
SKX | 3
目前我有这个
SELECT
CASE
WHEN Code LIKE 'SKX%'
THEN 'SKX'
WHEN Code LIKE 'SRP%'
THEN 'SRP'
END AS 'Start Code'
SELECT COUNT(Code) AS "Count Code in June" from Loan
WHERE MONTH(Start) = 6 or MONTH(End) = 6;
如何将这 2 个语句合并在一起?
合并语句的最简单方法是
SELECT COUNT(CASE
WHEN Code LIKE 'SKX%'
THEN 'SKX'
WHEN Code LIKE 'SRP%'
THEN 'SRP'
END ) AS "Count Code in June", CASE
WHEN Code LIKE 'SKX%'
THEN 'SKX'
WHEN Code LIKE 'SRP%'
THEN 'SRP'
END AS 'Start Code' from Loan
WHERE MONTH(Start) = 6 or MONTH(End) = 6
group by CASE
WHEN Code LIKE 'SKX%'
THEN 'SKX'
WHEN Code LIKE 'SRP%'
THEN 'SRP'
END
Im trying to get where i print the first 3 letter of the code and the count of it start or end in jun.
我建议:
select left(code, 3) as code_3, count(*)
from loan
where month(start) = 6 or month(end) = 6
group by code_3;
注意:要月份不要年份是非常非常少见的。如果你想要 2020 年 6 月,那么你会想要:
select left(code, 3) as code_3, count(*)
from loan
where (start >= '2020-06-01' and start < '2020-07-01') or
(end >= '2020-06-01' and end < '2020-07-01')
group by code_3;
然后这将不包括在 6 月 活动 但开始之前和之后结束的行。所以你可能真的想要任何重叠:
select left(code, 3) as code_3, count(*)
from loan
where start < '2020-07-01' and
end >= '2020-06-01'
group by code_3;
我有一个table
ID |Code |Start |End
1 | SKX007| 2020-06-01|2020-06-11
2 | SRP120| 2020-05-01|2020-05-01
3 | SKX454| 2020-05-01|2020-06-21
4 | SKX471| 2020-06-11|2020-06-15
我想知道在哪里打印代码的前 3 个字母以及它的计数从 jun 开始或结束。
Code |"Count Code in June"
SKX | 3
目前我有这个
SELECT
CASE
WHEN Code LIKE 'SKX%'
THEN 'SKX'
WHEN Code LIKE 'SRP%'
THEN 'SRP'
END AS 'Start Code'
SELECT COUNT(Code) AS "Count Code in June" from Loan
WHERE MONTH(Start) = 6 or MONTH(End) = 6;
如何将这 2 个语句合并在一起?
合并语句的最简单方法是
SELECT COUNT(CASE
WHEN Code LIKE 'SKX%'
THEN 'SKX'
WHEN Code LIKE 'SRP%'
THEN 'SRP'
END ) AS "Count Code in June", CASE
WHEN Code LIKE 'SKX%'
THEN 'SKX'
WHEN Code LIKE 'SRP%'
THEN 'SRP'
END AS 'Start Code' from Loan
WHERE MONTH(Start) = 6 or MONTH(End) = 6
group by CASE
WHEN Code LIKE 'SKX%'
THEN 'SKX'
WHEN Code LIKE 'SRP%'
THEN 'SRP'
END
Im trying to get where i print the first 3 letter of the code and the count of it start or end in jun.
我建议:
select left(code, 3) as code_3, count(*)
from loan
where month(start) = 6 or month(end) = 6
group by code_3;
注意:要月份不要年份是非常非常少见的。如果你想要 2020 年 6 月,那么你会想要:
select left(code, 3) as code_3, count(*)
from loan
where (start >= '2020-06-01' and start < '2020-07-01') or
(end >= '2020-06-01' and end < '2020-07-01')
group by code_3;
然后这将不包括在 6 月 活动 但开始之前和之后结束的行。所以你可能真的想要任何重叠:
select left(code, 3) as code_3, count(*)
from loan
where start < '2020-07-01' and
end >= '2020-06-01'
group by code_3;