我有一个复杂的sql问题。
我们可以在select查询中更新列吗?例子:
考虑下这张表:
|ID |SeenAt |
----------------
|1 |20 |
|1 |21 |
|1 |22 |
|2 |70 |
|2 |80 |
我想要一个select查询,它给出每个id第一次出现的时间。什么时候又看到了
|ID |Start |End |
---------------------
|1 |20 |21 |
|1 |20 |22 |
|1 |20 |22 |
|2 |70 |80 |
|2 |70 |80 |
首先,两列 Start
以及 End
将具有相同的值,但当第二行具有相同的 ID
我们需要更新它的前身 End
新的 SeenAt
价值观。我成功地创造了 Start
列,我给出最小值 SeenAt
每小时价值 ID
所有ID。但我找不到办法更新 End
每次都是列。
别介意双倍,我还有其他列,每一行都会改变
此外,我在 Impala 工作,但我可以使用甲骨文。
我希望我已经说得够清楚了。谢谢您
3条答案
按热度按时间tkclm6bt1#
你似乎需要
min()
解析函数self-join
:演示
w6mmgewl2#
你可以用
lead()
以及nvl()
:演示
xyhw6mcr3#
开始很容易
MIN
的GROUP
结束后你需要找到最小值SeenAt
如果你找不到,那么电流SeenAt
sql演示输出