[英]Select 2nd to last date with Group By
我有以下查询,希望能从第二个到最新日期获取数据
SELECT mn.meter_name, m.meter_number, m.meter_location, r.rates_meter_rate,
r.rates_meter_PPD, m.meter_ID, mt.metertracking_readend,
mt.metertracking_conversion, mt.metertracking_periodend
FROM db_meters m, db_meters_name mn, db_rates_meter r, db_meters_tracking mt
WHERE m.ICP_ID = '227' AND m.meter_name_ID = mn.meter_name_ID
AND r.meter_ID = m.meter_ID AND r.contract_ID = '70' AND mt.meter_ID = m.meter_ID
AND metertracking_periodend = (
SELECT max(metertracking_periodend)
FROM db_meters_tracking
WHERE meter_ID = mt.meter_ID
AND metertracking_periodend < (SELECT MAX(metertracking_periodend)
FROM db_meters_tracking)
GROUP BY meter_ID )
ORDER BY metertracking_periodend
输出以下内容:
meter_name meter_number meter_location rates_meter_rate rates_meter_PPD meter_ID metertracking_readend metertracking_conversion metertracking_periodend
Anytime 9011656:1 in front office 0.13870 10.000 15 73856 0.0000 2013-11-29
Anytime 9011656:2 in front office 0.13870 10.000 16 2899 1.0000 2013-11-29
但是,我期望以下几点:
meter_name meter_number meter_location rates_meter_rate rates_meter_PPD meter_ID metertracking_readend metertracking_conversion metertracking_periodend
Anytime 9011656:1 in front office 0.13870 10.000 15 0 0.0000 2013-10-31
Anytime 9011656:2 in front office 0.13870 10.000 16 0 1.0000 2013-10-31
我还附上了表格的屏幕截图
有什么想法我要去哪里吗? 或实际上是什么SQL查询才能完成此任务? 非常感谢。
我会这样重写查询(我尚未测试过,但我认为它是正确的):
SELECT mn.meter_name, m.meter_number, m.meter_location, r.rates_meter_rate,
r.rates_meter_PPD, m.meter_ID, mt.metertracking_readend,
mt.metertracking_conversion, mt.metertracking_periodend
FROM db_meters m INNER JOIN db_meters_name mn ON m.meter_name_ID = mn.meter_name_ID
INNER JOIN db_rates_meter r ON r.meter_ID = m.meter_ID
INNER JOIN db_meters_tracking mt ON mt.meter_ID = m.meter_ID
WHERE m.ICP_ID = '227' AND r.contract_ID = '70'
AND 2 = (SELECT count(DISTINCT a.metertracking_periodend)
FROM db_meters_tracking a
WHERE a.meter_ID = r.meter_ID AND mt.metertracking_periodend <= a.metertracking_periodend)
ORDER BY m.meter_ID, metertracking_periodend
请参阅此帖子以供参考。
另外,请在FROM子句中使用INNER JOINs而不是用逗号分隔的表。 现在被认为是标准
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.