Sql 从同一个表中删除结果列中的空值

Sql 从同一个表中删除结果列中的空值,sql,sql-server,Sql,Sql Server,表中有两列,其中一列根据另一列中的值分成两列 我的表格: xID - CompanyName -------------------- 250 Company1 250 Company2 130 Company3 1723 Company4 130 Company5 1723 Company6 我希望的结果 Column1 - Column2 ---------------------- Company1 Company4 Compan

表中有两列,其中一列根据另一列中的值分成两列

我的表格:

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')
我能做什么?希望你们能帮我

使用
行编号()
和聚合:

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
s通常是。不要对数字使用单引号——只对字符串和日期使用单引号


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

谢谢!我在结束和顺序之间添加了“)”,但效果很好。我添加了sql server,希望现在可以了