将列中的数据合并为一列
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 吗??以上是关于将列中的数据合并为一列的主要内容,如果未能解决你的问题,请参考以下文章
如何将列中的所有数据移动到单个列(不合并),然后拆分为R中的新列?