SQL - 如何在列中获取唯一值(在这里不同无济于事)



我有一个生产案例,我们在其中跟踪在仓库中移动的设备。我有一个表格显示了这些以前的位置,如下所示:

+--------+------------+-----------+------+
| device | current_WH |   date    | rank |
+--------+------------+-----------+------+
|      1 | AB         | 3/15/2018 |    7 |
|      1 | CC         | 3/19/2018 |    6 |
|      1 | CC         | 3/22/2018 |    5 |
|      1 | CC         | 3/22/2018 |    5 |
|      1 | DD         | 4/23/2018 |    4 |
|      1 | DD         | 5/11/2018 |    3 |
|      1 | DD         | 5/15/2018 |    2 |
|      1 | DD         | 5/15/2018 |    2 |
|      1 | AA         | 6/6/2018  |    1 |
|      1 | AA         | 6/6/2018  |    1 |
+--------+------------+-----------+------+

但是我需要找到current_WH的唯一值并将设备减少到一行(有数百万个设备(,如下所示:

+--------+------------+--------+--------+--------+
| device | current_WH | prev_1 | prev_2 | prev_3 |
+--------+------------+--------+--------+--------+
|      1 | AA         | DD     | CC     | AB     |
+--------+------------+--------+--------+--------+

我使用了排名功能(按日期按设备顺序分组(。它几乎做到了,但不完全是。你不能current_WH排名,因为这将按字母顺序排列。我需要按时间对current_WH进行排名。

知道如何实现第二张桌子吗?感谢您的帮助!

我认为这可以满足您的需求:

select device,
max(case when seqnum = 1 then current_wh end) as current_wh,
max(case when seqnum = 2 then current_wh end) as prev_1_wh,
max(case when seqnum = 3 then current_wh end) as prev_2_wh,
max(case when seqnum = 4 then current_wh end) as prev_3_wh
from (select t.*, dense_rank() over (partition by device order by maxdate desc) as seqnum
from (select t.*, max(date) over (partition by device, current_wh) as maxdate
from t
) t
) t
group by device

这建议我:

select t.device,
max(case when t.seq = 1 then current_wh end) as current_wh,
max(case when t.seq = 2 then current_wh end) as prev_1_wh,
max(case when t.seq = 3 then current_wh end) as prev_2_wh,
max(case when t.seq = 4 then current_wh end) as prev_3_wh
from (select t.*, dense_rank() over (order by date desc) as seq
from table t
where date = (select max(t1.date) from table t1 where t.device = t1.device and t.current_wh = t1.current_wh)
) t
group by t.device;

相关内容

  • 没有找到相关文章

最新更新