开发者社区> 问答> 正文

如何有效地将数据从多个记录中拉到1条记录中

我目前在与交易相关的表中有数据。每个记录都有一个购买ID,一个交易号以及最多分配给该交易的5个购买。每次购买最多可以进行10次交易。对于每次购买的第一笔交易,我需要一个字段,该字段是串联的每个唯一购买的字符串。我的解决方案很慢,我估计需要40天才能完成。什么是最有效的方法?

展开
收起
Puppet 2020-01-03 11:03:41 441 0
1 条回答
写回答
取消 提交回答
  • 您要寻找的东西可以通过两个步骤实现:

    步骤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函数来完成。如果不是这样,则以下链接突出显示了您可以执行以下操作的几种不同方式:

    连接/聚合字符串的最佳方法

    希望这可以帮助。

    2020-01-03 11:04:10
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载