我有一个查询来计算过去12个月的总和,如:
select part_no,
count(part_no) r12
from t1
where (t1.created<=sysdate and t1.created>=add_months(sysdate,-12)
是否可以创建一个同时在同一查询中显示滚动6和滚动3的查询,如:
part_no r12 r6 r3
-----------------
100 8 2 1
200 12 1 0
300 10 4 4
答案 0 :(得分:0)
你可能会尝试这样的事情:
SELECT part_no,
SUM( IF(t1.created>=add_months(sysdate,-12), 1, 0) ) r12,
SUM( IF(t1.created>=add_months(sysdate,-6), 1, 0) ) r6,
SUM( IF(t1.created>=add_months(sysdate,-3), 1, 0) ) r3
FROM t1
WHERE t1.created<=sysdate
GROUP BY part_no
答案 1 :(得分:0)
您可以通过它计算子查询和组中的日期差异(以月为单位)。但不要忘记查询性能。
答案 2 :(得分:0)
如果您只想知道过去12,6和3中所有项目的COUNT
,您可以按如下方式更改查询。
SELECT part_no
,COUNT(CASE WHEN t1.created <= sysdate
AND t1.created >= add_months(sysdate, -12) THEN 1
ELSE NULL
END) r12
,COUNT(CASE WHEN t1.created <= sysdate
AND t1.created >= add_months(sysdate, -6) THEN 1
ELSE NULL
END) r6
,COUNT(CASE WHEN t1.created <= sysdate
AND t1.created >= add_months(sysdate, -3) THEN 1
ELSE NULL
END) r3
FROM t1
GROUP BY part_no