我正在尝试选择一个在两个日期(2015年4月1日至2015年4月30日)之间的特定票证类别='SR‘的票证,其状态目前是开放的(即等待供应商,正在进行)。
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语句以显示在选定日期(4月1日至4月30日)之间状态发生变化的所有票证
非常感谢:)
左边的表格是tkt_table,右边是tkt_status


发布于 2015-06-12 04:45:00
您可以在having子句中使用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发布于 2015-06-12 05:02:28
您可以同时使用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 https://stackoverflow.com/questions/30795364
复制相似问题