2016-10-23 12 views
0

私はSQL Server 2014を使用しています。私はSQL Server開発には初めて、クライアントの要件に取り組んでいます。私はこれが私のテーブルLOANSある同じテーブルの異なる列の値を複数の条件で更新するにはどうすればよいですか?

...つのレポートを支援する必要があります。

pid c_name ProductFlag Duration Discription 
===================================================== 
1. Ash  p   Annual  Vehicle loan 
2. JOHN  GOLD   Half  Gold Loan 
3. Prit  Home   Annual  Home loan 
4. Pari  P   Half  Vehicle loan 
5. Stacy Home   Annual  Home loan 
6. Meet  Gold   Annual  Gold Loan 
7. Mandy Gold   Quarterly Gold Loan 
8. Rose  Home   Annual  Home loan 
9. Rita Tractor   Half  Tractor loan 
10. Lary Education  Half  Education loan 

私は

update LOANS 
set description = CASE 
        WHEN productflag = 'p' THEN 'applied for vehicle loan ' 
        WHEN productflag = 'gold' THEN 'applied for gold loan' 

としてProductflag値に基づいて、列Descriptionを更新すると同時に、私が欲しいですDuration値に基づいて列descriptionを更新します。どんなにProductflagは、その特定の(productflags「P」を除くと、私は上記のように更新したい「金」)の期間....のために、何であるか

私はちょうどベースの列Descriptionを更新したいですDuration値で次のように続いて

update LOANS 
set description = CASE 
        WHEN Duration = 'half' THEN 'applied for half year' 
        WHEN Duration = 'Quarter' THEN 'applied for Quarter year loan' 

が出力

pid c_name ProductFlag Duration Discription 
===================================================== 
1. Ash  p   Annual  applied for vehicle loan 
2. JOHN  GOLD   Half  applied for half year 
3. Prit  Home   Annual  Home loan 
4. Pari  P   Half  applied for half year 
5. Stacy Home   Annual Home loan 
6. Meet  Gold   Annual  applied for gold loan 
7. Mandy Gold   Quarterly applied for Quarter year loan 
8. Rose  Home   Annual  Home loan 
9. Rita Tractor   Half  applied for half year 
10. Lary Education  Half  applied for half year 

でなければなりません助けてくださいできるだけ早く、ありがとう!

答えて

2

productflagの条件の後にdurationの条件を追加します。

CASEステートメントは、指定された順序でWHEN句ごとにinput_expression = when_expressionを評価します。

UPDATE loans 
SET description = 
     CASE 
       WHEN productflag = 'p' THEN 'applied for vehical loan ' 
       WHEN productflag = 'gold' THEN 'applied for gold loan' 
       WHEN duration = 'half' THEN 'applied for half year' 
       WHEN duration = 'Quarter' THEN 'applied for Quarter year loan' 
      ... 
+0

ちょっとプラディープ、私のクエリに答えるためのおかげで多くの...しかし、私はこれを試していた第二のために1つの条件のみに基づいて出力を取得していなかったと思います....私は明日もう一度チェックします –

+0

誰も助けてくれるの?私はサーバ上でチェックし、一度に1つの条件だけを適用しています。私は、ProductflagによるとDuration.Couldではなく、誰かに私のテーブルを更新することができるようにクエリを書く方法を教えてください同時にProductflagとDurationの両方の条件に基づいています。 –

0

上記のPrDKの回答は正しいです(https://stackoverflow.com/a/40203237/4689372)。

あなたの出力を見て、少し奇妙なものを私は言うべきです:)。以下のコードでテストしてください。

UPDATE LOANS 
SET DESCRIPTION = 
CASE 
    WHEN Duration = 'Quarterly' AND ProductFlag IN ('P','GOLD') THEN 'applied for Quarter year loan' 
    WHEN Duration = 'Annual' AND ProductFlag IN ('GOLD') THEN 'applied for ANNUAL loan' 
    WHEN Duration = 'Half' THEN 'applied for half year' 
    WHEN ProductFlag NOT IN ('P','GOLD') THEN 'APPLIED FOR ' + ProductFlag + 'LOAN' 
END 
+0

私はあなたに同意しますその奇妙な出力...しかし、ここでは、私は例として、このテーブルを形成して...実際には、サーバー上の日付の巨大な量です。私は確かにそこにあると言うことができます50種類の商品フラグがあり、 'DURATION'列の代わりに40種類のBASELSを含む 'BASEL'という列があります。ですから、私たちがPRODUCTFLAGとBASELの両方のために別々にケースを作ることができますので、コンビネーション数を書く必要はありません。 –

+0

あなたはこの問題にあなたが与えた解決策を教えてください。どのように実装しましたか?ありがとう。 – KoP

+0

同じテーブルの2つの異なる列の複数の条件に基づいて、1つのクエリで2つの列を2回更新する方法が見つかりませんでした。 2つの異なるクエリで2回更新しました。 –

関連する問題