как исправить синтаксис sql case - PullRequest
0 голосов
/ 19 декабря 2011

работа на sql-server-2005

  SELECT    A.specific_customization_id ,
            A.customization_id ,
            A.customization_value ,
            A.customization_price ,
            A.customization_cost ,
            A.customization_code ,
            A.customization_check ,
            A.sort_order ,
            A.option_code ,
            A.product_id ,
            A.image_1 ,
            A.image_2 ,
            A.MainProductID ,
            A.customization_product_id ,
            A.inactive ,
            A.customization_description ,
            A.customization_select ,
            A.UOM ,
            A.allow_recur ,
            auto_reorder = CASE A.MainProductID --it's an int type column
                             WHEN NULL THEN A.allow_recur
                             ELSE ( SELECT  allow_recur
                                    FROM    wc_product
                                    WHERE   product_id = A.MainProductID
                                  )
                           END
  FROM      dbo.wc_product_specific A
  WHERE     A.product_id = 1133

Используя вышеупомянутый запрос, я хочу установить значение столбца auto_reorder. Хотите установить два входа в систему

  1. Когда столбец My MainProductID имеет значениеnull Я хочу установить значение столбца allow_recur
  2. Если оно не равно NULL, я хочу установить другое значение столбца таблицы

Моя логика 2) работает нормально, не понимает, почему 1) неРабота?Помогите мне решить проблему?

Если у вас есть вопросы, пожалуйста, спросите заранее.

1 Ответ

1 голос
/ 19 декабря 2011

Работает ли это:?

SELECT    A.specific_customization_id ,
            A.customization_id ,
            A.customization_value ,
            A.customization_price ,
            A.customization_cost ,
            A.customization_code ,
            A.customization_check ,
            A.sort_order ,
            A.option_code ,
            A.product_id ,
            A.image_1 ,
            A.image_2 ,
            A.MainProductID ,
            A.customization_product_id ,
            A.inactive ,
            A.customization_description ,
            A.customization_select ,
            A.UOM ,
            A.allow_recur ,
            A.auto_reorder = CASE  --it's an int type column
                             WHEN A.MainProductID IS NULL THEN A.allow_recur
                             ELSE B.allow_recur
                             END

  FROM      dbo.wc_product_specific A
            left outer join wc_product B on  B.product_id = A.MainProductID
  WHERE     A.product_id = 1133
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...