[英]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.