2016-10-23 2 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 

Я хочу, чтобы обновить столбец Description, основанный на Productflag значений в

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

и в то же время я хочу для обновления столбца description на основе значений Duration.

Независимо от того, что Productflag есть для этого конкретного срока .... (кроме productflags «р» и «золото», который я хочу, чтобы обновить как упоминалось выше)

Я просто хочу, чтобы обновить столбец 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

Добавить duration состояние после productflag состояние.

CASE заявление оценивает input_expression = when_expression за каждый пункт WHEN в указанном порядке.

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

эй Прадипом, спасибо за ответ на мой запрос ... Но я думаю, что я пытался это и получал выход на основе только одно условие, а не второй .... я проверю еще раз завтра –

+0

Hii все, может кто-нибудь помочь пожалуйста ??? я проверял на сервере, и он применяет только одно условие за раз. Я получаю вывод, в котором ОПИСАНИЕ обновлено в соответствии с 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» есть столбец с именем «BASEL», который содержит 40 различных BASELS. так, есть ли способ, которым мы можем просто править CASE КОГДА ТОЛЬКО для обоих PRODUCTFLAG и BASEL отдельно, так что мне не нужно записывать количество комбинаций в состоянии –

+0

Не могли бы вы предоставить решение, которое вы дали этой проблеме? Как вы его реализовали? Благодарю. – KoP

+0

Я не нашел способа, с помощью которого мы можем дважды обновить один столбец в одном запросе на основе нескольких условий для двух разных столбцов этой же таблицы. Я просто обновил его дважды в двух разных запросах. –