问题描述
不知道用这个去哪里。我知道我需要将日期和时间与“createdon”分开,但后来我被难住了。
我可以通过查询带回值,但我必须每天手动输入。
`SELECT
sum(CASE WHEN title LIKE '%Environmental%' THEN 1 ELSE 0 END)As Environmental,sum(CASE WHEN title LIKE '%Let%' THEN 1 ELSE 0 END)As Let,sum(CASE WHEN title LIKE '%Lease%' THEN 1 ELSE 0 END)As Lease,sum(CASE WHEN title LIKE '%Pay%' THEN 1 ELSE 0 END)As Paym,sum(CASE WHEN title LIKE '%Manage%' THEN 1 ELSE 0 END)As Manage,sum(CASE WHEN title LIKE '%rent%' THEN 1 ELSE 0 END)As Rent,sum(CASE WHEN title LIKE '%Works%' THEN 1 ELSE 0 END)As Works
来自 事件 在哪里 (createdon > ('01/09/2021 00:01') 和 createdon
解决方法
SELECT
sum(CASE WHEN title LIKE '%Environmental%' THEN 1 ELSE 0 END)As Environmental,sum(CASE WHEN title LIKE '%Let%' THEN 1 ELSE 0 END)As Let,sum(CASE WHEN title LIKE '%Lease%' THEN 1 ELSE 0 END)As Lease,sum(CASE WHEN title LIKE '%Pay%' THEN 1 ELSE 0 END)As Paym,sum(CASE WHEN title LIKE '%Manage%' THEN 1 ELSE 0 END)As Manage,sum(CASE WHEN title LIKE '%Rent%' THEN 1 ELSE 0 END)As Rent,sum(CASE WHEN title LIKE '%Works%' THEN 1 ELSE 0 END)As Works,createdon
FROM incident WHERE createdon between <your_start_date> and <your_end_date>
GROUP BY createdon
,
您需要按日期聚合。一种方法如下所示:
SELECT CAST(createdon as DATE),SUM(CASE WHEN title LIKE '%Environmental%' THEN 1 ELSE 0 END)As Environmental,SUM(CASE WHEN title LIKE '%Let%' THEN 1 ELSE 0 END) As Let,SUM(CASE WHEN title LIKE '%Lease%' THEN 1 ELSE 0 END) As Lease,SUM(CASE WHEN title LIKE '%Pay%' THEN 1 ELSE 0 END) As Paym,SUM(CASE WHEN title LIKE '%Manage%' THEN 1 ELSE 0 END) As Manage,SUM(CASE WHEN title LIKE '%Rent%' THEN 1 ELSE 0 END) As Rent,SUM(CASE WHEN title LIKE '%Works%' THEN 1 ELSE 0 END)A s Works,FROM incident
GROUP BY CAST(createdon as DATE)
ORDER BY CAST(createdon as DATE);
问题是众所周知的日期/时间函数依赖于数据库。以下是一些语法:
-
CAST(createdon as DATE)
应该可以在 SQL Server、MySQL 和 Postgres 中使用。 -
TRUNC(createdon)
在 Oracle 工作。 -
DATE()
在 SQLite 中。