我已经要求在几个条件下提取唯一数据,而现在我被困了。谁能建议如何解决这个问题?
表格如下所示:
Date |ID | TicketNumber | Category | Subcategory|TCount1| TCount2|TCount3
01.04.2017| 1 | 11111 | OldMachine | DDD | 1 | 2 | 3
01.04.2017| 1 | 13451 | OldMachine | DDD | 1 | 2 | 3
01.04.2017| 1 | 14343 | OldMachine | DDD | 1 | 2 | 3
01.04.2017| 2 | 22222 | New Machine| FFD | 2 | 5 | 8
02.04.2017| 2 | 22222 | New Machine| FFD | 9 | 7 | 9
我应该得到:
For 01.04.2017 for ID=1
01.04.2017| 1 | 11111 | OldMachine | DDD | 1 | 2 | 3
01.04.2017| 1 | 13451 | OldMachine | DDD | 1 | 2 | 3
01.04.2017| 1 | 14343 | OldMachine | DDD | 1 | 2 | 3
For 02.04.2017 for ID=2
02.04.2017| 2 | 22222 | New Machine| FFD | 9 | 7 | 9
我需要计算每个ID总计,但是:
有人有点想法吗?
由于
我试过了:
select t1.date, t1.id, t1.ticketnumber
from schema.table t1
inner join
(select max(schema.table.date) as maxdate, schema.table.id,schema.table.ticketnumber,
from schema.table
GROUP BY schema.table.id,schema.table.ticketnumber) t2
on t2.id = t1.id
and t2.maxdate = t1.date;
但是这会返回所有的票证号码(不是唯一的)。
答案 0 :(得分:1)
如果一个TicketNumbers重复,我需要采取最后一个并且只计算那个。
select TicketNumber, count(TicketNumber) as ticketcount
from your_table a
inner join (select max(id) as maxid from your_table) b where a.id = b.id)
group by TicketNumber
每个ID包含每个日期的所有TicketNumbers的总和。
select outer.Date, outer.ID, inner.ticketcount, sum(inner.ticketcount)
from your_table outer
inner join ( select TicketNumber, count(TicketNumber) as ticketcount
from your_table a
inner join (select max(id) as maxid from your_table) b
where a.id = b.id)
group by TicketNumber ) inner
on inner.TicketNumber = outer.TicketNumber
group by outer.Date, outer.ID, inner.ticketcount
类别和子类别可以在一天内更改某些ID。
select yt.Date
, yt.ID,
, yt.TicketNumber
, yt.Category
, yt.SubCategory
, t2.ticketcount as TCount1
, t2.sumticket as TCount2
, count(yt.ID) as TCount3
from your_table yt
inner join (select Date, ticketcount, sum(ticketcount) as sumticket
from your_table outer
inner join ( select TicketNumber, count(TicketNumber) as ticketcount
from your_table a
inner join (select max(id) as maxid from your_table) b
on a.id = b.id
group by TicketNumber ) inner
on inner.TicketNumber = outer.TicketNumber
group by Date, ticketcount) t2
on yt.Date = t2.Date
group by yt.Date
, yt.ID,
, yt.TicketNumber
, yt.Category
, yt.SubCategory
, t2.ticketcount
, t2.sumticket
这假设您的TCount1表示您的案例编号1,您的案例编号为2的Tcount2和列表中的案例3的Tcount3。