所有日期的分组截止日期最大值的SQL查询

时间:2017-12-02 05:28:15

标签: mysql sql

我有一些基于不同分组的日期的值 对于每个分组ID,到特定日期的最大值是多少。

实施例

日期分组ID值

2017年6月1日1 100

2017年6月3日1 101

2017年6月6日1 103

2017年6月2日2 200

2017年6月4日2 210

2017年6月8日2 220

2017年6月1日2 1000

2017年6月5日2 1020

2017年6月9日2 1050

我需要输出如下

日期分组ID值

2017年6月1日1 100

2017年6月2日1 100

2017年6月3日1 101

2017年6月4日1 101

2017年6月5日1 101

2017年6月6日1 103

2017年6月7日1 103

2017年6月8日1 103

2017年6月9日1 103

2017年6月10日1 103

2017年6月1日2 NULL

2017年6月2日2 200

2017年6月3日2 200

2017年6月4日2 210

2017年6月5日2 210

2017年6月6日2 210

2017年6月7日2 210

2017年6月8日2 220

2017年6月9日2 220

2017年6月10日2 220

2017年6月1日3 1000

2017年6月2日3 1000

2017年6月3日3 1000

2017年6月4日3 1000

2017年6月5日3 1020

2017年6月6日3 1020

2017年6月7日3 1020

2017年6月8日3 1020

2017年6月9日3 1050

2017年6月10日3 1050

1 个答案:

答案 0 :(得分:1)

假设您拥有" " ++ s"${that.text2D(0)(0)}" ++ "\n" ++ s"${this.text2D(0)(0)}" 所有天数x所有分组ID数据,您可以尝试以下两个查询:

TEMPLATE_TABLE

上表CREATE TABLE TABLE_1 AS SELECT A.DATE, A.GROUPING_ID, B.VALUE FROM TEMPLATE_TABLE A LEFT JOIN GIVEN_TABLE B ON A.DATE = B.DATE AND A.GROUPING_ID = B.GROUPING_ID ORDER BY A.GROUPING_ID, A.DATE; 将为匹配填充值,对非匹配填充NULL。

您可以使用此表通过以下查询中给出的自联接查找所有日期的指定日期之前的最大值:

TABLE_1

希望这有效。如果没有,请告诉我。