如果第一个有空或空白,sql server合并两个记录

时间:2015-04-15 21:29:24

标签: sql sql-server

我有一张桌子说A

我想合并两个记录,记录为Id 100和101

id    Col1   Col2    Col3 ....... Col100   parent_Id
100   null   some                 val      33
101   xyz    abc     pqr                   100
=============================================== result should be
      xyz    some    pqr         val

Condistion:

  1. 如果第一个记录具有值(非空白),则从第一个记录显示100
  2. 如果第一条记录为NULL或空白,则显示第二条记录
  3. 我可以通过join为每个列使用case语句来解决它,比如

    Case When ISNULL(R1.Col1, '') = '' Then R2.Col1 ELSE R1.Col1 END  
    

    有没有什么技巧可以让我为每一栏写下案例?

1 个答案:

答案 0 :(得分:0)

  

有没有什么技巧可以让我为每一栏写下案例?

在T-SQL中没有技巧可以避免为合并结果中的每一列编写单独的表达式。但是,您可以使用除CASE表达式之外的表达式,其中一些表达式提供小的简洁优势,并且可能具有较小的运行时优势。在你的问题的评论中提出了两个这样的表达。

如果你真的想避免编写单独的表达式,并且你有很多表想要进行这种合并,那么你可以考虑为它编写一个用户定义的函数,或者甚至只是用它来编写它一个外部程序,其中任何一个都应该能够表达以相同方式处理每个列的想法。不过,在这样的事情发生之前,你的问题需要成为一个非常大的问题。