首页 > 解决方案 > 查询以组合两列如果它们不同,否则只返回一列的结果

问题描述

我正在使用 Oracle SQL Developer 并且有两列我想合并为一列,但前提是每列中的数据不同。

因此,例如,如果两列中都包含“London”一词,则连接的列将仅显示 London。但是,如果一列有“伦敦”而另一列有“英格兰”,那么合并后的列将显示“伦敦”;英国'

那可能吗?

我得到了这个代码

select shipto_addr1 || ', ' || shipto_city from pp_finance_bank

连接本网站上几个有帮助的用户的两列,但建议将上面的问题作为单独的问题发布。

如果您想让我进一步澄清这个问题,请告诉我,

谢谢

标签: sqloracleoracle-sqldeveloper

解决方案


使用CASE

select case when shipto_addr1 = shipto_city then shipto_addr1
            else shipto_addr1 ||', '|| shipto_city
       end address
from pp_finance_bank

作为您作为评论发布的查询:未汇总的所有内容都应成为该GROUP BY子句的一部分。所以:

  SELECT homogenized_company,
         contract_no,
         CASE
            WHEN shipto_addr1 = shipto_city THEN shipto_addr1
            ELSE shipto_addr1 || ', ' || shipto_city
         END
            address,
         distributor,
         software_vendor,
         SUM (new_annual) acv
    FROM pp_finance_bank
   WHERE contract_no IN ('Z0101-S-00003687')
GROUP BY homogenized_company,
         contract_no,
         CASE
            WHEN shipto_addr1 = shipto_city THEN shipto_addr1
            ELSE shipto_addr1 || ', ' || shipto_city
         END,
         distributor,
         software_vendor;

推荐阅读