2016-04-26 59 views
-4

我实际的表:查询等级秩序在SQL

-------------------------------------------------- 
     Col1  |  Col2   |  Col3  | 
-------------------------------------------------- 
    1    A     1 
    6    F     2 
    3    C     4  
    2    B     1 
    5    E     3 
    4    D     2 

预期结果:

------------------ 
|Columns Should Be| 
------------------ 
A  B F D C E 

我需要SQL查询这个层次logic.I已经使用列1和COL3得到最终的逻辑。请帮助我解决这个问题。

+0

PLSQL是Oracle,但SQL Server被标记。你能改正吗? – jarlh

+0

我需要从SQL查询。 – Kapil

+0

我建议至少有一点方法来解决这个问题。你有什么尝试,为什么不工作。您向我们提供的信息非常少,对您的输入和预期输出的指导甚少。 –

回答

0

我刚刚看过你的回复,我相信这是你的追求;

CREATE TABLE #TempData (Col1 int, Col2 varchar(1), Col3 int) 
INSERT INTO #TempData (Col1, Col2, Col3) 
VALUES 
('1','A','1') 
,('6','F','4') 
,('6','C','2') 
,('2','B','1') 
,('5','E','3') 
,('4','D','5') 

SELECT 
Col2 
FROM #TempData 
GROUP BY Col2 
ORDER BY SUM(Col1)+SUM(Col3) 

DROP TABLE #TempData 
+0

谢谢但我错误地发布了错误的问题。请检查我的问题,并帮助我出来 – Kapil

+0

好吧,这个问题从一开始就一团糟。我建议你看看UNPIVOT的指令,当你没有(明显)尝试自己做这件事时,不要提出模糊的问题。 –

0
declare @table table (col1 int, col2 varchar(1), col3 int) 
insert into @table (col1,col3) 
values 
(1, 1), 
(6, 4), 
(3, 2), 
(2, 1), 
(5, 3), 
(4, 2) 

/* 
     Col1  |  Col2   |  Col3  | 
-------------------------------------------------- 
    1    A     1 
    6    F     4 
    3    C     2  
    2    B     1 
    5    E     3 
    4    D     5 
*/ 
select col1, 
     case 
      when col1 > col3 then char(col1 + 64) 
      else char(col3 + 64) 
     end as col2, 
     col3 
from @table 
0
在SQL Server

,你可以尝试这个,

declare @t table (Col1 int, Col2 varchar(1), Col3 int) 
INSERT INTO @t (Col1, Col2, Col3) 
VALUES 
('1','A','1') 
,('6','F','2') 
,('3','C','4') 
,('2','B','1') 
,('5','E','3') 
,('4','D','2') 
declare @str as varchar(100)='' 
;with t as(select top 1 col1,col2,col3 from @t union all select t1.col1, t1.col2,t1.col3 from @t t1,t 
where (t1.Col1!=t.Col1 and t1.Col3=t.Col1)) 

select @[email protected]+' '+col2 from t 
select @str as col