从2日期范围和personstatus获得结果

时间:2017-07-19 11:14:13

标签: c# mysql

我有一个问题。我试图从2个日期范围和人员状态获得结果,mysql表有3列:id,Date,personstatus。 我的表架构和示例查询必须具有以下链接: http://sqlfiddle.com/#!9/7dfde3/2

但是这个查询是在2017-07-03获得结果Min id - personstatus =' i'和2017年3月3日的最大ID - personstatus =' o'。(此查询获得了真实的结果,但它是1个日期范围2017-07-03,我正在尝试2个日期范围示例2017-07 -03:2017-07-07) 如何从2个日期范围获得示例获取最小ID和最大值。 例如:

2017-07-03的最低身份证,personstatus ='我' ,2017-07-03中的最大ID,personstatus =' o',

2017-07-05的最低身份证,personstatus ='我' ,2017-07-05中的最大ID,personstatus =' o',

2017-07-07的最低身份证,personstatus ='我' ,2017-07-07中的最大ID,personstatus =' o'

如果使用sql查询无法做到这一点,那么如何将这个结果从c#WPF传递给gridView。

感谢。

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,以下查询应该会为您提供结果。

fatal: could not read Password for 'https://my_username@bitbucket.org'

很多连接,我不确定这是否是最佳选择,但它可以按预期使用您的测试数据。

结果是

SELECT ta.id as minID, ta._date as minDate, tb.id as maxID, tb._date as maxDate
FROM
(SELECT * FROM t t1
JOIN
(Select MIN(_date) as minDate From t Where personstatus='i' GROUP BY DATE(_date)) t2
ON t1._date=t2.minDate) ta
JOIN
(SELECT * FROM t t3
JOIN
(Select MAX(_date) as maxDate From t Where personstatus='o' GROUP BY DATE(_date)) t4
ON t3._date=t4.maxDate) tb
ON DATE(ta._date)=DATE(tb._date)