【问题标题】:How to merge 3 cells content in one in excel or by using sql如何在excel中或使用sql将3个单元格内容合并为一个
【发布时间】:2011-03-24 09:25:42
【问题描述】:

我有一个 excel csv 文件,我正在使用 sqlbulkcopy 上传到 sql server 表,excel 中的数据看起来像这样

 121 **ABCDEFG**  138.00 141   XYZ
     **HIJKLMN**
     **OPQRSTUV**     

所以基本上这 3 行在表中创建一条记录,我应该如何将这 3 行 cmets 合并为一个?

【问题讨论】:

  • 请不要全部使用大写。它让你看起来像是在对你的肺大喊大叫,或者你很无知。
  • 您能否提供更多有关您的表格的信息,例如您拥有哪些字段、格式、每条记录是否总是有 3 条评论行等。
  • 显示数据在 CSV 文件或数据库表中的外观,excel 数据视图毫无价值。还显示用于填充 excel 文件的查询
  • “在表中创建一条记录”是什么意思。你的意思是在 excel 中这是 3 行,你需要它在一个?
  • @Swapnil:您可能需要更新您的问题以在其中添加这条信息,而不是在评论中。这可能证明你愿意帮助那些想帮助你的人。

标签: sql excel vba excel-2007


【解决方案1】:

我可能会在 VBA 中逐行执行此操作:

我会初始化一些变量,例如 startRow、currentRow 和 lastRow

我将创建一个接受行号的递归函数,它会检查 NEXT 行的第一列是否为空白...如果为空白,它将返回当前行的第二列以及相同函数的输出使用下一个行号。如果不是空白,它将返回当前行的第二列。它还会检查 lastRow 计数是否已命中。

主循环将从起始行开始,并构建一个简单的插入查询,使用递归函数获取第二列的注释文本,然后递增 currentRow 计数器。它将检查该行以查看第一列是否为空,如果是则继续下一行。它将检查是否已达到最后一行。

【讨论】:

    【解决方案2】:

    将您的查询更改为以下内容:

    set nocount on;
    declare @t table (Ro_No nvarchar(5), Comments nvarchar(20), Amount decimal(5,2))
    insert into @t (Ro_No, Comments, Amount)
    select '121','**ABCDEFG**' , 1.38 union
    select '121','**HIJKLMN**' , 1.38 union
    select '121','**OPQRSTUV**', 1.38 union
    select '221','aaa'         , 2.2 union
    select '221','bbb'         , 2.2 union
    select '321','test3a'      , 3.2 union
    select '321','test3b'      , 3.2
    set nocount off
    
    SELECT p1.Ro_No
             ,stuff(
                       (SELECT
                            ', ' + p2.Comments
                            FROM @t p2
                            WHERE p2.Ro_No=p1.Ro_No
                            ORDER BY p2.Ro_No,p2.Comments
                            FOR XML PATH('') 
                       )
                       ,1,2, ''
                   ) AS All_Comments
          ,p1.Amount
          FROM @t p1
         GROUP BY 
            Ro_No, Amount
    

    输出:

    Ro_No All_Comments                              Amount
    ----- ----------------------------------------- ------
    121   **ABCDEFG**, **HIJKLMN**, **OPQRSTUV**    1.38  
    221   aaa, bbb                                  2.20  
    321   test3a, test3b                            3.20  
    
    (3 row(s) affected)                             
    

    【讨论】:

      猜你喜欢
      • 2013-11-11
      • 1970-01-01
      • 1970-01-01
      • 2021-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-20
      • 2022-12-07
      相关资源
      最近更新 更多