2014-02-08 74 views
-3

Cong BJP  AAP  Winner Win By 
25554 36985 **26929** BJP  10056 
19753 **24569** 36239 AAP  11670 

使用SQL Server 2008,這是表決表,我想請從聰,人民黨和AAP列投票第二最大數量與結果值的列名 回報 預期結果:如何爲那些粗體的值選擇列名稱?

Againstvote AgainstPartyName 
26929   AAP 
24569   BJP
+2

我真的不明白你在問什麼。你能提供表格的佈局和你嘗試過的任何SQL嗎? –

+0

分享你的電子郵件ID,我會寄給你 –

+0

你的問題沒有任何意義。請重新說明...... –

回答

0
select 
    case 
     when BJP between AAP and Cong then BJP 
     when AAP between BJP and Cong then AAP 
     else Cong 
    end as AgainstVote, 
    case 
     when BJP between AAP and Cong then 'BJP' 
     when AAP between BJP and Cong then 'AAP' 
     else 'Cong' 
    end as AgainstPartyName 
from tab 
+0

真的幫助完全謝謝Dnoeth。 –

0

看起來你想要一種方法來將你的列名作爲你的數據的一部分。我會說,這說明了一個次優設計。無論如何,你的具體情況有一個UNPIVOT條款救援:

SELECT 
    Votes  AS AgainstVotes, 
    PartyName AS AgainstPartyName 
FROM dbo.atable AS t 
UNPIVOT (
    Votes FOR PartyName in (BJP, AAP) 
) AS u 
WHERE PartyName <> Winner 
; 

的UNPIVOT條款轉換數據集中到這一點:

Cong PartyName Votes Winner Win By 
----- --------- ----- ------ ------ 
25554 BJP  36985 BJP  10056 
25554 AAP  26929 BJP  10056 
19753 AAP  36239 AAP  11670 
19753 BJP  24569 AAP  11670 

WHERE子句然後篩選出與中獎票行,保持失去的參與者。