【发布时间】:2017-05-16 12:56:09
【问题描述】:
在 sql 中是否有一个内置函数来反转 groupby 的工作顺序?我尝试按某个键进行分组,但我希望返回最后插入的记录,而不是第一个插入的记录。
使用 orderby 更改顺序不会影响此行为。
提前谢谢!
编辑:
这是样本数据:
id|value
-----
1 | A
2 | B
3 | B
4 | C
作为我想要的回报
1 | A
3 | B
4 | C
不是
1 | A
2 | B
4 | C
当使用 group by id 时没有得到我想要的结果。
【问题讨论】:
-
请向我们展示一些示例数据来说明您的问题。
-
请提供样本数据和预期结果。我不清楚这个问题,样本数据将有助于澄清。在我看来,你想要一个日期的最大值,或者你想选择 max(Inserted),ID group by ID 然后加入到基本集以获取每个组的最新记录?
-
GROUP BY不返回“样本”记录。你应该有适当的聚合函数来获得你想要的值。 -
LAG 函数将返回查询的最后一行,如果这是您真正要求的,但您的问题非常不清楚。
-
GROUP BY w/o 聚合真的没有意义。您此时没有聚合。您真正需要分组依据的唯一时间是当您使用 min/max/avg 等时...如果您有重复的记录要删除,我会使用 distinct 来明确含义。