2016-04-26 58 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