繁体   English   中英

如何将单列值拆分为两列而没有空值?

[英]How to split a single column values into two columns without null values?

下面是原始表的样子。

| Catid| Name  |
| ---- | ----  |
|1     | ramesh|
|1     | suresh|
|1     | mahesh|
|2     | rahul |
|2     | rajesh|

我需要作为

|catname1 | catname2|
| ----    | ----    |
|ramesh   | rahul   |
|suresh   | rajesh  |
|mahesh   |         |

我尝试了以下查询,但这会产生空值

select (case when s1.catid=1 then s1.name end) as cat1name,
       (case when s1.catid=2 then s1.name end) as cat2name
from deemucty.sample12 as s1 

由于您没有按名称提供订购商品,因此我按字母顺序对其进行订购。

select      min (case catid when 1 then name end)  as catname1
           ,min (case catid when 2 then name end)  as catname2

from       (select      row_number () over (partition by catid order by name)  as rn
                       ,catid
                       ,name

            from        deemucty.sample12
            ) t

group by    rn

order by    rn
;

您可以通过在一个catid的所有名称与另一个catid的所有名称之间进行完全外部联接来做到这一点:

select t1.name as catname1, 
       t2.name as catname2
from (
  select name, row_number() over (order by name) as rn
  from the_table
  where catid = 1
) t1
  full join (
    select name, row_number() over (order by name) as rn
    from the_table
    where catid = 2
  ) t2 on t1.rn = t2.rn

示例: http//rextester.com/KJLFAR74695

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM