【发布时间】:2016-02-19 18:08:03
【问题描述】:
我需要帮助来确定我尝试生成唯一标识符列的日期的最后更改价格,因此我可以将分区应用于这个新列并在我的编程中导出额外的逻辑。 你能帮我推导出唯一标识符列吗?
Date | OrderID | Price | Seq_no |Unique-Indentifier
1/24/2015 | 568956 | 300 | 1 | 1
1/20/2015 | 568956 | 350 | 1 | 2
1/20/2015 | 568956 | 375 | 2 | 3
1/20/2015 | 568956 | 400 | 3 | 4
1/17/2015 | 568956 | 400 | 1 | 4
1/14/2015 | 568956 | 500 | 1 | 5
1/11/2015 | 568956 | 500 | 1 | 5
1/9/2015 | 568956 | 400 | 1 | 6
1/7/2015 | 568956 | 400 | 1 | 6
1/24/2015 | 568957 | 600 | 1 | 7
1/20/2015 | 568957 | 600 | 1 | 7
1/17/2015 | 568957 | 700 | 1 | 8
1/14/2015 | 568957 | 800 | 1 | 9
1/11/2015 | 568957 | 800 | 1 | 9
1/9/2015 | 568957 | 700 | 1 | 10
1/7/2015 | 568957 | 700 | 1 | 10
我无法在价格列上应用分区。原因:对于 OrderID '568956',在两个不同的日期设置了相同的价格 400。我想隔离这两组。如果我只是在价格列上使用分区,那么我会将所有四行作为一组。所以我需要放置一些标识符来区分这些行并在我的新列“UniqueIdentifier”上应用分区。
Set 1:
1/20/2015 568956 400 4
1/17/2015 568956 400 4
Set 2:
1/9/2015 568956 400 6
1/7/2015 568956 400 6
如果我应用分区,我会得到一组结果 - 这是我不期望的。
Set 1:
1/20/2015 568956 400 4
1/17/2015 568956 400 4
1/9/2015 568956 400 4
1/7/2015 568956 400 4
【问题讨论】:
-
你能显示你正在使用的 SQL 吗?我不太明白这个问题以及您如何获得第 1 组的这些值
-
当一列显然不是唯一的时候,为什么还要称它为“唯一标识符”?
标签: sql rank window-functions