如何从group by sql table获取最大值?

时间:2016-10-06 09:32:33

标签: sql sql-server group-by

我有一张桌子

Id | Version | DateFrom   | DateTo     |
_______________________________________
1  | 1       | 2015-09-15 | 2015-09-18 |
1  | 2       | 2015-09-15 | 2015-09-18 |
1  | 3       | 2015-09-15 | 2015-09-20 | --different date
1  | 4       | 2015-09-15 | 2015-09-18 |
2  | 1       | 2015-09-15 | 2015-09-18 |
2  | 2       | 2015-09-15 | 2015-09-18 |

我正在尝试创建一个视图,该视图使用最新版本独立于其他列返回记录。 例如,我希望:

Id | Version | DateFrom   | DateTo     |
_______________________________________
1  | 4       | 2015-09-15 | 2015-09-18 |
2  | 2       | 2015-09-15 | 2015-09-18 |

这就是我已经做过的事情:

Select
    Id,
    MAX([Version]) AS Version,
    DateFrom,
    DateTo  
FROM
    dbo.Table_1
Group By
    Id,
    DateFrom,
    DateTo

但结果是:

Id | Version | DateFrom   | DateTo     |
_______________________________________
1  | 4       | 2015-09-15 | 2015-09-18 |
1  | 3       | 2015-09-15 | 2015-09-20 |
2  | 2       | 2015-09-15 | 2015-09-18 |

3 个答案:

答案 0 :(得分:1)

也可以使用左连接:

{{1}}

答案 1 :(得分:0)

有一个返回每个id的最大版本的子查询。加入这个结果:

/some-text-to-find-forward
?some-text-to-find-backward

答案 2 :(得分:0)

您可以运行这种查询:

int bs = 4096;
int rpos = 0;
while(rpos < size) {
    int len = Math.Min(bs, size - rpos);
    int read = stream.Read(data, rpos, len);
    if(read < bs) {
        Debug.WriteLine("Congestion: {0}/{1}.", read, len);
        bs /= 2;
    }
    rpos += read;
}