2015-06-12 3 views
0

Я пытаюсь выбрать билеты, у которых был статус, который в настоящее время открыт (т. Е. На Hold, Ожидающие поставщики, в процессе), с определенным классом билетов = «SR» между 2 датами (1 апреля 2015 года - 30 апреля 2015 года).Выбор билета с историей состояния

select * from tkt_table where class = 'SR' and status = 'INPROG' or status = 'PENDING' or status = 'INC'... order date by datereport desc 

Есть две таблицы, тот, который имеет информацию о билетах является tkt_table, а другой имеет билет статус история tktStatus_table. они оба имеют tktid в качестве ключа.

Как получить этот SQL заявление, чтобы показать мне все билеты, которые были изменены статусы между выбранной датой (1 апреля - 30April)

Большое спасибо :)

Таблица на левом является tkt_table и право является tkt_status

tkt_table tkt_status

ответ

0

Вы можете использовать COUNT (DISTINCT статус) в имеющей п, например:

SELECT * FROM 
tkt_table t inner join 
(SELECT tktid, count(distinct status) cnt FROM tktStatus_table 
WHERE dateReport >= '20150401' AND dateReport < '20150501' 
GROUP BY tktid 
HAVING COUNT(DISTINCT status) > 1) as a on t.tktid=a.tktid 
+0

Благодаря Ча, я пытаюсь получить сколько раз статус был изменен на каждом билете, где статус билета был открыт (INPROG, HOLD, PEND и т. д.), – user4070102

0

Вы можете join как таблица, а затем Group By Id билетов

SELECT tiketId from tkt_table tt JOIN tktStatus_table ts on tt.tiketId = ts.tiketId 
where Class = 'SR' and dateReport Between '2015-04-01' AND '2015-04-30' 
Group BY tktid 
Having Count(DISTINCT status) > 1 
Смежные вопросы