有一个表“DataBase1”.Table1”,其中包含按时间间隔(Start_DT – End_DT)有关客户端(包括其服务通道)的各种信息。从此表中,您需要选择所有数据(下面的查询示例)和另一个具有递增键的计算列“Key”,每个客户端的键随着其服务渠道的每次变化而增加。任务 1 的基本请求示例:
SELECT
CLIENT_ID, START_DT, END_DT, CHANNEL, «ваш текст» AS KEY
FROM
"DataBase1".Table1
WHERE 1 = 1
AND CLIENT_ID IN(123, 124)
ORDER BY
CLIENT_ID, START_DT DESC
任务 1 的卸载示例:
CLIENT_ID | START_DT | END_DT | 渠道 | 钥匙 |
---|---|---|---|---|
124 | 18年11月17日 | 99年12月31日 | 大量的 | 1 |
124 | 2018年10月10日 | 2018年11月16日 | 大量的 | 1 |
123 | 2018年11月13日 | 99年12月31日 | 大量的 | 3 |
123 | 2018年12月11日 | 2018年12月11日 | 总理 | 2 |
123 | 2018年11月8日 | 2018年11月11日 | 大量的 | 1 |
123 | 2018年10月13日 | 2018年11月7日 | 大量的 | 1 |
那些。在 CLIENT_ID 分区内,您需要一个计数器来计算每个通道的变化。在这种情况下,它显示为该 SELECT 中的附加字段。
我试图使 DENSE_RANK() 成为窗口函数
SELECT CLIENT_ID, START_DT, END_DT, CHANNEL,
DENSE_RANK() OVER (PARTITION BY client_id ORDER BY channel)
FROM table1
ORDER BY client_id DESC, start_dt DESC;
结论是:
CLIENT_ID | START_DT | END_DT | 渠道 | 钥匙 |
---|---|---|---|---|
124 | 18年11月17日 | 99年12月31日 | 大量的 | 1 |
124 | 2018年10月10日 | 2018年11月16日 | 大量的 | 1 |
123 | 2018年11月13日 | 99年12月31日 | 大量的 | 1 |
123 | 2018年12月11日 | 2018年12月11日 | 总理 | 2 |
123 | 2018年11月8日 | 2018年11月11日 | 大量的 | 1 |
123 | 2018年10月13日 | 2018年11月7日 | 大量的 | 1 |