簡體   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