按列排序,然后排并考虑非唯一列值

时间:2010-11-29 19:00:46

标签: sql

  

可能重复:
  Ordered Value by Column / Row

有点难以解释。跳过示例可能更容易。

一个表有一个id和四列,每列都允许null。

ID, Col1, Col2, Col3, Col4

有x行。 (通常小于4)并且列中最多只能使用4个不同的值。

我希望最多返回4行,其中结果集中的每一行基本上都是一个列值,其中从右边开始选择值,从顶部保留Col编号。如果另一行的值不是列唯一的,则会转移到下一个可用列。

示例:

如果我有:

ID, Col1, Col2, Col3, Col4  
0,  A   , B   ,     , D  
1,      ,     , C   ,

我想返回

A  
B  
C  
D

ID, Col1, Col2, Col3, Col4  
0,  A   , B   , C   ,   
1,  D   ,     ,     ,

给出

A  
B  
C  
D 

谢谢!可以抛弃在值之间存在非唯一列和空格的情况 这不会发生:

a,b,,d
c,,,

这可能会有所帮助:

CREATE TABLE #original ( id int ,A INT, B INT, C INT, D INT );

INSERT INTO #original
SELECT 0,1,2,null,4
union 
select 1,null,null,3,null
--SELECT 0,1,2,3,null
--union 
--select 1,4,null,null,null

select * from #original order by id asc

DROP TABLE #original

0 个答案:

没有答案
相关问题