2017-02-01 18 views
0

私はいくつかの列を持つテーブルを持っています。特に、Nominal & MktBuyAmtの2つの列があります。列の値に基づいて異なる列を選択してください

私がしたいのは、両方の列の2つの値が同じで、名目列の値を使用するが、2つの値が異なる場合にMktBuyAmt列の値を選択する場合です。

クイック例

Nominal MktBuyAmt 
    7   8 
    5   5 
    3   3 

回答以下

NewSS 
    8 
    5 
    3 

(私はここに例からコピーした)私の試みがあるが、それは無効な列名「MktBuyAmt」を言うエラーメッセージを返します。その下に赤い線があるMktBuyAmtは、Nominal = MktBuyAmtを持つものです。

select Id, Name, Nominal, MktButAmt, 
     case when Nominal = MktBuyAmt 
     then Nominal 
     else MktButAmt end NewSS 
from tblA 
+9

これは、すべての行で 'MktBuyAmt'列を選択するのと同じではありませんか? – Lamak

+4

私はあなたが 'MktButAmt'と' MktBuyAmt'の間でタイプミスをしていると思いますが、それ以外は不要です。 –

+1

ああ...それは単にタイプミスです!卑劣なビキニ。そのように投票が終わった。 – Tanner

答えて

2
CREATE TABLE #Table1 
    ([Nominal] int, [MktBuyAmt] int) 
; 

INSERT INTO #Table1 
    ([Nominal], [MktBuyAmt]) 
VALUES 
    (7, 8), 
    (5, 5), 
    (3, 3) 
SELECT CASE WHEN NOMINAL = MKTBUYAMT THEN NOMINAL ELSE MKTBUYAMT END AS NEWSS FROM #TABLE1 

出力

NEWSS 
8 
5 
3 
+0

申し訳ありません、OPを再読してください。あなたは正しいですか? – scsimon

1

私はあなたが実際に2列の大きい方を取得したいと仮定し、これが事実であるならば、あなたは以下を使用することができます。それ以外の場合は、MktBuyAmtをコメントで示唆しているように選択してください。

declare @t table (nominal int, mktbuyamt int) 
insert into @t 
values 
(7,8), 
(8,7), 
(3,3) 

select 
case when nominal >= mktbuyamt then nominal else mktbuyamt end as NewSS 
from @t 
関連する問題