我目前在与交易相关的表中有数据。每个记录都有一个购买ID,一个交易号以及最多分配给该交易的5个购买。每次购买最多可以进行10次交易。对于每次购买的第一笔交易,我需要一个字段,该字段是串联的每个唯一购买的字符串。我的解决方案很慢,我估计需要40天才能完成。什么是最有效的方法?
您要寻找的东西可以通过两个步骤实现:
步骤1:提取每次购买的第一笔交易
根据您的表配置,这可以通过几种不同的方式完成。
如果您的交易ID是连续的,则可以使用以下方法:
select * from table a
inner join
(select purchaseid,min(transactionid) as transactionid
from table group by purchaseid) b
on a.purchaseid-b.purchaseid and a.transactionid=b.transactionid
如果存在日期变量来驱动交易顺序,则:
select a.* from
(select *,row_number() over(partition by purchaseid order by date) as rownum from table)a
where a.rownum=1
步骤2:合并购买详细信息
如果您使用的是最新版本的SQL Server,则可以使用String_agg函数来完成。如果不是这样,则以下链接突出显示了您可以执行以下操作的几种不同方式:
连接/聚合字符串的最佳方法
希望这可以帮助。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。