请问这样的几条SQL怎么合并成一条语句并且将结果返回到一个表中?
分组的条件是固定的
可以 外面再套一个select 把 你这里的每一个查询 当成一个表,连接在一起就可以了
例如 select * from ( (第一条分组语句) a inner join (第二个语句)b on a.字段=b.字段))
每个查询语句里得增加一个 用于连接的字段,这个字段应该是saveDateTime. 如果查询结果不是每个日期都有,可能要用左侧连接或全连接
还有一种更好的解决方案
这几条语句都是从同一个表查询的,所以可以用case when语句 将满足条件的设置为1 不满足的设置为0 ,然后外面套一个sum 一次查询就可以得到结果了。效率更好
SELECT
STRFTIME('%d',A1.SaveDatetime),
SUM(CASE WHEN b1.Age<18 THEN 1 ELSE 0 END) AS COUNT_AGE_18,
SUM(CASE WHEN b1.Age>=18 AND b1.Age<20 THEN 1 ELSE 0 END) AS COUNT_AGE18_20,
SUM(CASE WHEN b1.Age>=21 AND b1.Age<30 THEN 1 ELSE 0 END) AS COUNT_AGE21_30,
SUM(CASE WHEN b1.Age>=31 AND b1.Age<40 THEN 1 ELSE 0 END) AS COUNT_AGE31_40,
SUM(CASE WHEN b1.Age>=41 AND b1.Age<50 THEN 1 ELSE 0 END) AS COUNT_AGE41_50,
SUM(CASE WHEN b1.Age>=51 AND b1.Age<60 THEN 1 ELSE 0 END) AS COUNT_AGE51_60,
SUM(CASE WHEN b1.Age>60 THEN 1 ELSE 0 END) AS COUNT_AGE60_
FROM Form_ApplicantsTable AS a1
LEFT JOIN Form_ApplicantDemographicTable as b1 on a1.Guid=b1.ApplicantGuid
WHERE date(a1.SaveDatetime)>'2019-10-10'
group by STRFTIME('%d',A1.SaveDatetime)