繁体   English   中英

从同一个表中删除结果列中的 NULL

[英]Remove NULLs in result columns from same table

我在一个表中有两列,我希望其中一列根据另一列的值分成两列

我的表:

xID  -  CompanyName
--------------------
250     Company1
250     Company2
130     Company3
1723    Company4
130     Company5
1723    Company6

我想要的结果

Column1  -  Column2
----------------------
Company1    Company4
Company2    Company6
Company3
Company4

我目前的结果

Coulmn1  -  Column2
--------------------
Company1    Null
Company2    Null
Company3    Null
Null        Company4
Company5    Null
Null        Company6

我的代码

SELECT
case when xid in ('250', '130') then CompanyName END as 'Column1'
,case when xid in ('1723') then CompanyName END as 'Column2'
FROM Mytable
Where xid in ('250', '130', '1723')

我能做什么? 希望你们能帮助我。

使用row_number()和聚合:

SELECT MAX(CASE WHEN xid in (250, 130) THEN CompanyName END) as Column1,
       MAX(CASE WHEN xid in (1723) THEN CompanyName END) as Column12
FROM (SELECT t.*,
             ROW_NUMBER() OVER (PARTITION BY (CASE WHEN xid IN (250, 130) THEN 1 ELSE 2 END) ORDER BY CompanyName) as seqnum
      FROM Mytable t
      WHERE XID in (250, 130, 1723)
     ) t
GROUP BY seqnum
ORDER BY seqnum;

请注意,我删除了文字值周围的单引号。 这些看起来像数字。 id通常是。 不要对数字使用单引号——仅对字符串和日期使用。

同样,不要对列别名使用单引号——仅对字符串和日期使用。

暂无
暂无

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

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