首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我希望SQL查询选择多个列为一个

我希望SQL查询选择多个列为一个
EN

Database Administration用户
提问于 2020-07-17 06:51:03
回答 2查看 6.8K关注 0票数 0

我只有一个表,在那个表中有三列company1、company2、company3。

以下是我的表格数据:

代码语言:javascript
运行
复制
Company1    Company2    Company3
ABC     
Test1       Test3   Test5
Test2       Test4   Test6           
testing     testing2    

我想将这些列合并成具有序列号的单个列,如下所示:

代码语言:javascript
运行
复制
SrNo    CompanyName
1       ABC     
2       Test1           
3       Test2      
4       testing 
5       Test3
6       Test4
7       testing2    
8       Test5
9       Test6
EN

回答 2

Database Administration用户

发布于 2020-07-17 13:14:36

我一直喜欢用UNPIVOT进行这类手术。假设源表上有某种ID列,这也是可行的。

代码语言:javascript
运行
复制
DECLARE @Company TABLE 
    (
    PKID INT NOT NULL IDENTITY(1,1) PRIMARY KEY
    , Company1 NVARCHAR(20) NULL
    , Company2 NVARCHAR(20) NULL
    , Company3 NVARCHAR(20) NULL
    )

INSERT INTO @Company 
    (Company1, Company2, Company3)
VALUES
    ('ABC', NULL, NULL)     
    ,('Test1', 'Test3', 'Test5')
    ,('Test2', 'Test4', 'Test6')           
    ,('testing', 'testing2', NULL);


SELECT SrNo = ROW_NUMBER() OVER (ORDER BY PKID, CompanySrcCol)
    , CompanyName 
FROM @Company AS C
    UNPIVOT (CompanyName FOR CompanySrcCol IN (Company1, Company2, Company3)) AS unpvt
ORDER BY PKID
    , CompanySrcCol 
票数 1
EN

Database Administration用户

发布于 2020-07-17 11:41:42

您可以使用三种查询的联合使用,比如这样的

代码语言:javascript
运行
复制
SELECT 1 AS tableNro, Company1 AS CompanyName
  FROM yourTable
UNION ALL
SELECT 2 AS tableNro, Company2
  FROM yourTable
UNION ALL
SELECT 3 AS tableNro, Company3
  FROM yourTable

要获得序列号,您可以像这样使用row_number

代码语言:javascript
运行
复制
SELECT ROW_NUMBER() OVER(ORDER BY (x.tablenro, CompanyName)) AS SrNo, x.CompanyName
FROM (
    SELECT 1 AS tableNro, Company1 AS CompanyName
      FROM yourTable
    UNION ALL
    SELECT 2 AS tableNro, Company2
      FROM yourTable
    UNION ALL
    SELECT 3 AS tableNro, Company3
      FROM yourTable
) x
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/271123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档