SQL - 将多个列合并为一列,包含更多行

时间:2012-07-25 14:00:13

标签: sql rows

我有一个包含20列的表,它们都显示相同的内容。我不确定为什么我的公司会这样设置,但我无法对表进行更改。

考虑到这一点,这就是我需要做的事情。我需要用保险公司名称填写下拉列表。因此,我需要在整个表格中找到唯一的值。

使用Group By子句是不可能的,因为我需要在整个表中使用唯一值。没有单个列包含所有可能的值。我唯一的想法是将表格的所有列组合在一起。我已经看到这使用两个管道(||)完成。但这连接了对我没用的列。

我需要将两个(或二十个)列连接在一起并将它们的行添加到一起。即如果我从20列和100行开始,我需要有一列2000行。这样我就可以使用Group By子句选择唯一值。

非常感谢任何帮助!

我想要完成的样本:

示例原始表:

    --Ins1-----Ins2---Ins3---Ins4-
    Medicaid-Medicare-------------
    ---------Medicaid-----No 485--
    Blue Cross--------------------
    -------Home Health----Medicare

表I我需要构建:

    --Column1--
    -Medicaid--
    -----------
    Blue Cross-
    -----------
    -Medicare--
    -Medicaid--
    -----------
    Home Health
    -----------
    -----------
    -----------
    -----------
    -----------
    --No 485---
    -----------
    -Medicare--

也许我的逻辑错了。这是我在整个表格中找到唯一信息的唯一方法。

1 个答案:

答案 0 :(得分:5)

如果这是SQL Server,那么您需要使用UNPIVOT来执行此转换。

示例UNPIVOT(请参见SQL Fiddle演示):

select ques, answer
FROM t1
unpivot
(
    answer
    for ques in (col1, col2, col3, col4)
) u

UNPIVOT会将您的数据从列转换为行。