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,希望现在可以了