如何在第 1 列中查找原始编号

How to find original number in column1

提问人:Ashwini 提问时间:11/16/2023 更新时间:11/16/2023 访问量:21

问:

在 Snowflake 中编写 SQL 查询的最佳或最具表现力的方法是什么

需要找到该逻辑的原始编号是

列 5 = 0 和列 1 = 'qw%'

以 qw 开头的最后 3 位数字 = 相应原始数字的最后 3 位数字

将具有相同的 column2,column3,column4 值

列 1 专栏 2 专栏 3 专栏 4 专栏5
12345 23 11 45242 7890
QW345系列 23 11 45242 0
23981 56 22 45243 6678
QW981系列 56 22 45243 0
99765 31 90 45244 3345
QW765系列 31 90 45244 0
44871 78 45 45245 2345
QW871型 78 45 45245 0

示例输出如下:

original_number 山坳
12345 QW345系列
23981 QW981系列
99765 QW765系列
44871 QW871型
snowflake-云-数据-平台

评论

0赞 Ashwini 11/16/2023
我试过这个查询:SELECT original_number, col FROM your_table t1 JOIN your_table t2 ON SUBSTRING(t1.列 1, 4) = 子字符串 (t2.第 1 列、第 4 列)和第 1 列。列 2 = t2。列 2 和 t1。列 3 = t2。列 3 和 t1。列 4 = t2。第 4 列 其中 t1.列 5 = 0 和 t1。列 1 如 'qw%' 和 t2。列 5 <> 0;

答:

1赞 SelVazi 11/16/2023 #1

您需要通过 column1 的最后 3 位数字自联接表,然后使用 和 应用条件聚合:GROUP BYMAX()

select max(case when t.Column1 not like 'qw%' then t.Column1 end) as original_number,
       s.Column1 as col
from your_table t
inner join (
  select Column1
  from your_table
  where Column5 = 0 and column1 like 'qw%'
) s on SUBSTRING(s.Column1, 3) = SUBSTRING(t.Column1, 3)
group by s.Column1;