将列中的数据合并为一列

Posted

技术标签:

【中文标题】将列中的数据合并为一列【英文标题】:Merge data from columns into one column 【发布时间】:2013-08-05 21:42:56 【问题描述】:

我有三个不同的表,我需要三个表中的同一列,并且我需要将所有值放入一个输出列中而不会丢失任何记录。以下是现有查询建议我进行一些修改

    SELECT 
    dbo.dealer_program_details.o_comments,
    dbo.Self_Am.o_comments,
    dbo.Coop_Payment_Detail.o_comments
    FROM
    dbo.dealer_program_details
    INNER JOIN
    dbo.Self_Am
    ON
    (
        dbo.dealer_program_details.DEALER_CODE = dbo.Self_Am.Dealer_Code)
    INNER JOIN
    dbo.Coop_Payment_Detail
   ON
    (
        dbo.dealer_program_details.DEALER_CODE = dbo.Coop_Payment_Detail.Dealer_Code)

现在我想将这三列合并为一列

【问题讨论】:

【参考方案1】:

如果您希望它们在一列中,则将它们连接在一起:

SELECT (dbo.dealer_program_details.o_comments + dbo.Self_Am.o_comments +
        dbo.Coop_Payment_Detail.o_comments
       ) as OneColumn
FROM dbo.dealer_program_details INNER JOIN
     dbo.Self_Am
     ON dbo.dealer_program_details.DEALER_CODE = dbo.Self_Am.Dealer_Code INNER JOIN
     dbo.Coop_Payment_Detail
     ONdbo.dealer_program_details.DEALER_CODE = dbo.Coop_Payment_Detail.Dealer_Code;

在 Sybase 中,您不必担心 NULL 值,因为它们被视为空字符串。在 SQL Server 中,如果任何列值为NULL,则结果将为NULL

编辑:

您可以使用coalesce() 选择第一个非NULL 行:

SELECT coalesce(dbo.dealer_program_details.o_comments, dbo.Self_Am.o_comments,
        dbo.Coop_Payment_Detail.o_comments
       ) as OneColumn

但是如果两个(或更多)列有 cmets,那么您将只保留第一个非 NULL 的。

【讨论】:

Gordon 这里还有其他方法,因为我们正在合并行。有什么办法可以在不合并行的情况下获得 coulumns 吗??

以上是关于将列中的数据合并为一列的主要内容,如果未能解决你的问题,请参考以下文章