我的要求是创建一个视图。以下是输入:
gid tid c1 c2 c3
20304 23233 5 6 2
20304 23423 3 2 6
20304 23567 0 3 2
20304 23784 0 0 0
其中c1,c2和c3是最后3天的列名。即如果今天是12月17日,我想捕获12月16日,12月15日和12月14日的数据。
我有一个交易表,我从哪里得到gid,tid。可以通过tid和date从多个行组派生计数。以下是查询。
如果对于1 gid和tid,我们可能会计算一天,但是在其他日子我们可能不会得到gid和tid。
SELECT
gid,
tid,
count(*) as count1,
modifiedDate,
CURDATE() as today
from mbm
WHERE modifiedDate >= DATE_SUB(CURDATE(), INTERVAL 3 DAY) AND modifiedDate <= CURDATE()
GROUP BY gid, tId, DATE_FORMAT(modifiedDate,'%Y-%m-%d')
使用此查询我得到以下结果:
gid tid count1
25494 25648 1
20202 25733 1
20202 25727 1
25494 25705 2
25403 25693 2
25494 25648 2
25489 25639 2
25403 25630 2
25494 25617 1
25489 25605 1
25403 25593 1
25155 25584 2
25494 25507 1
25489 25501 1
21522 25462 1
21522 25456 1
25403 25410 1
25155 25295 1
25155 25283 1
24909 25261 1
如何获得上述格式的结果?我该怎么用?联盟?
请帮忙。感谢。
答案 0 :(得分:0)
您可以使用sum
和case
来实现此目标:
select gid,tid,
sum(case when modifiedDate >= curdate() - interval 1 day
and modifiedDate < curdate() then count1 else 0 end) as c1,
sum(case when modifiedDate >= curdate() - interval 2 day
and modifiedDate < curdate() - interval 1 day then count1 else 0 end) as c2,
sum(case when modifiedDate >= curdate() - interval 3 day
and modifiedDate < curdate() - interval 2 day then count1 else 0 end) as c3
from mbm
group by gid,tid;