假设我在Snowflake的原始架构中有这个表:
ID | SHIFT | TYPE | DOW_NUM |
---|---|---|---|
0 | 101 | A1 | ,2-5, |
1 | 102 | A8 | 1-3,5-6, |
2 | 153 | X5 | 1-3,5-6 |
2 | 150 | Q9 | ,1-3,5-6, |
3 | 567 | Q3 | ,1-3,5-6 |
4 | 345 | T6 | 1-3,5, |
5 | 555 | H6H | ,1-3,5, |
6 | 353 | HU78 | ,1-3,5 |
1 | 213 | B5 | 1,3-4,7, |
23 | 875 | J4 | ,1,3-4,7, |
23 | 607 | S3 | ,1,3-4,7 |
56 | 452 | A3 | ,7, |
12 | 587 | ADLS2 | ,7 |
12 | 839 | QWRETY4 | 7, |
13 | 466 | R5 | , |
14 | 743 | Y7 | ,2,4,6, |
14 | 432 | E32 | 2,4,6 |
31 | 117 | OP9 | 2,4,6, |
11 | 109 | TRE5 | ,2,4,6 |
20 | 217 | TUYP8 | 1-6,7 |
我需要将"DOW_NUM"列转换为NEW_DOW_NUM列,如下所示:
ID | SHIFT | TYPE | DOW_NUM | NEW_DOW_NUM |
---|---|---|---|---|
0 | 101 | A1 | ,2-5, | 2,5 |
1 | 102 | A8 | 1-3,5-6, | 1,2,3,5,6 |
2 | 153 | X5 | 1-3,5-6 | 1,2,3,5,6 |
2 | 150 | Q9 | ,1-3,5-6, | 1,2,3,5,6 |
3 | 567 | Q3 | ,1-3,5-6 | 1,2,3,5,6 |
4 | 345 | T6 | 1-3,5, | 1,2,3,5 |
5 | 555 | H6H | ,1-3,5, | 1,2,3,5 |
6 | 353 | HU78 | ,1-3,5 | 1,2,3,5 |
1 | 213 | B5 | 1,3-4,7, | 1,3,4,7 |
23 | 875 | J4 | ,1,3-4,7, | 1,3,4,7 |
23 | 607 | S3 | ,1,3-4,7 | 1,3,4,7 |
56 | 452 | A3 | ,7, | 7 |
12 | 587 | ADLS2 | ,7 | 7 |
12 | 839 | QWRETY4 | 7, | 7 |
13 | 466 | R5 | , | |
14 | 743 | Y7 | ,2,4,6, | 2,4,6 |
14 | 432 | E32 | 2,4,6 | 2,4,6 |
31 | 117 | OP9 | 2,4,6, | 2,4,6 |
11 | 109 | TRE5 | ,2,4,6 | 2,4,6 |
20 | 217 | TUYP8 | 1-6,7 | 1,2,3,4,5,6,7 |
我如何在snowflake中做到这一点?"DOW_NUM"列将始终具有分别为1和7的最小和最大数值,因为这些数字表示一周中的日期,问题是某些值具有不同组合的连字符和逗号.
我发布这个问题是因为这是我在自己的工作中必须解决的问题,我已经有了答案,但我发布它是为了帮助Stack Overflow社区,以防有人遇到类似的问题.如果你有比我发布的更好的解决方案,请分享它,这样我就可以了解其他获得最终结果的方法.