如何解决使用Plsql在一张表中需要不同数量的唯一地址,ID等
请在以下情况下提供帮助。 我想使用plsql或
在一张表中使用不同数量的不同地址,ID等例如下面是当前表
Address aRea zipcode ID Amount amount2 qua number
123 Howe's drive AL 1234 1234567 100 20 1 666666
123 Howe's drive AL 1234 1234567 5 05 2 abcccc
123 east drive AZ 456 8910112 200 11 1 777777
123 east drive AZ 456 8910112 5 5 2 SDN133
116 WOOD Ave NL 1234 2325890 3.23 1.25 1 10483210
116 WOOD Ave NL 1234 2325890 3.24 1.26 2 10483211
我需要以下输出。
Address aRea zipcode ID Amount amount2 qua number
123 Howe's drive AL 1234 1234567 100 20 1 666666
5 05 2 abcccc
123 east drive AZ 456 8910112 200 11 1 777777
5 5 2 SDN133
116 WOOD Ave NL 1234 2325890 3.23 1.25 1 10483210
3.24 1.26 2 10483211
解决方法
这类任务通常最好在应用程序端完成。
您可以 使用SQL进行此操作-但您需要一列以一致地对记录进行排序:
select
case when rn = 1 then address end as address,case when rn = 1 then area end as area,case when rn = 1 then zipcode end as zipcode,case when rn = 1 then id end as id,amount,amount2,qua,number
from (
select
t.*,row_number() over(
partition by address,area,zipcode,id
order by ??
) rn
from mytable t
) t
order by address,id,??
窗口函数的partition by
子句列出了您要“分组”在一起的列;您可以根据需要进行修改。
order by
的{{1}}子句指示在分区中应如何对行进行排序:您需要确定要使用哪一列(或一组列)。为了使输出有意义,在查询中还需要一个row_number()
子句,在该子句中将重复分区和排序列。
以下是用于BigQuery标准SQL
我建议采用以下方法
#standardSQL
SELECT address,ARRAY_AGG(STRUCT(amount,number)) info
FROM `project.dataset.table`
GROUP BY address,id
如果要应用于您的问题的样本数据-输出为
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。