首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将同一表中的行拆分为列?

如何将同一表中的行拆分为列?
EN

Stack Overflow用户
提问于 2018-05-04 19:09:24
回答 2查看 41关注 0票数 1

假设我有一个非常简单的桌子,像这样:

我想要一个查询来返回1行的数据,如下所示:

我该怎么做呢?到目前为止,我尝试过的是:

代码语言:javascript
复制
SELECT
    od.OrderNo,
    CASE
        WHEN od.PartNo LIKE 'CAD%' THEN od.PartNo
        END AS [Part1],
    CASE
        WHEN od.PartNo LIKE 'CAD%' THEN od.DueDate
        END AS [DueDate1],
    CASE
        WHEN od.PartNo LIKE 'WISH%' THEN od.PartNo
        END AS [Part2],
    CASE
        WHEN od.PartNo LIKE 'WISH%' THEN od.DueDate
        END AS [DueDate2]
FROM OrderDet od
WHERE od.OrderNo = '20352E'
    AND (od.PartNo LIKE 'CAD%'
    OR od.PartNo LIKE 'WISH%')

我从中得到的结果如下:

我也尝试了一个自我连接,就像这样:

代码语言:javascript
复制
SELECT
    od.OrderNo,
    od.PartNo AS [Part1],
    od.DueDate AS [DueDate1],
    od2.PartNo AS [Part2],
    od2.DueDate AS [DueDate2]
FROM OrderDet od
    JOIN OrderDet od2 ON od.OrderNo = od2.OrderNo
WHERE od.OrderNo = '20352E'
    AND (od.PartNo LIKE 'CAD%'
    OR od2.PartNo LIKE 'WISH%')

但这也不起作用,但是,第8行是我想要的,只是不确定如何隔离,结果如下:

那么,是否有办法真正做到我想做的,并让它显示在一排?不能把我的头绕在这上面。任何帮助都将不胜感激,谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-04 19:13:32

使用group by子句并进行条件聚合

代码语言:javascript
复制
select OrderNo,
       max(case when PartNo LIKE 'CAD%' then 'CAD' end) as PartNo1,
       max(case when PartNo LIKE 'CAD%' then DueDate end) as DueDate1,
       max(case when PartNo LIKE 'WISH%' then 'WISH' end) as PartNo2,
       max(case when PartNo LIKE 'WISH%' then DueDate end) as DueDate2
from OrderDet o
where OrderNo = '20352E' and 
      (PartNo LIKE 'CAD%' or PartNo LIKE 'WISH%')
group by OrderNo; 
票数 1
EN

Stack Overflow用户

发布于 2018-05-04 20:08:52

这个怎么样:

代码语言:javascript
复制
SELECT
    OrderNo,
    (SELECT  MAX(PartNo) FROM OrderDet) AS [Part1],
    (SELECT  MAX(DueDate) FROM OrderDet) AS [DueDate1],
    (SELECT  MIN(PartNo) FROM OrderDet) AS [Part2],
    (SELECT  MIN(DueDate) FROM OrderDet) AS [DueDate2]
FROM OrderDet
WHERE od.OrderNo = '20352E'
    AND (od.PartNo LIKE 'CAD%'
    OR od2.PartNo LIKE 'WISH%')
GROUP BY OrderNo
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50181688

复制
相关文章

相似问题

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