2016-05-04 2 views
0

Я хочу, чтобы из этого гнезда аргумента case я хотел получить 2 значения, поэтому я могу вставить их в таблицу результатов для проверки совпадений, затем обновляю результаты из таблицы #game. Я установил обновление как часть оператора select. я получаюКак я могу получить вложенные аргументы аргументов, чтобы возвращать значения

недействителен ошибка колонки

на standard_matches и bonus_match. Затем я попытаюсь получить значение после аргумента case и с той же ошибкой. Это код аргумента case.

BEGIN -- 
    -- update #game set gwn = standard_matches ,gsn = bonus_match from 
-- where gameno = 1 
    -- from 
     SELECT 
      @Ball1 AS Ball1, 
      @Ball2 AS Ball2, 
      @Ball3 AS Ball3, 
      @Ball4 AS Ball4, 
      @Ball5 AS Ball5, 
      @Ball6 AS Ball6, 
      standard_matches 
      bonus_match 
     from #draws 
    CROSS APPLY 
     (SELECT 
      CASE WHEN Winningball1 IN (@Ball1, @Ball2, @Ball3, @Ball4, @Ball5, @Ball6) THEN 1 end + 
      CASE WHEN Winningball2 IN (@Ball1, @Ball2, @Ball3, @Ball4, @Ball5, @Ball6) THEN 1 ENd + 
      CASE WHEN Winningball3 IN (@Ball1, @Ball2, @Ball3, @Ball4, @Ball5, @Ball6) THEN 1 END + 
      CASE WHEN Winningball4 IN (@Ball1, @Ball2, @Ball3, @Ball4, @Ball5, @Ball6) THEN 1 END + 
      CASE WHEN Winningball5 IN (@Ball1, @Ball2, @Ball3, @Ball4, @Ball5, @Ball6) THEN 1 END + 
      CASE WHEN Winningball6 IN (@Ball1, @Ball2, @Ball3, @Ball4, @Ball5, @Ball6) THEN 1 END as standard_matches, 
      CASE WHEN Bonusball1 IN (@Ball1, @Ball2, @Ball3, @Ball4, @Ball5, @Ball6) THEN 1 END + 
      CASE WHEN Bonusball2 IN (@Ball1, @Ball2, @Ball3, @Ball4, @Ball5, @Ball6) THEN 1 END as bonus_match 
     ) AS ca1 
     set @sm = standard_matches 
     set @bm = bonus_match 
     update #game set gwn = @sm ,gsn = @bm where gno = 1 
end 

ответ

0

Я думаю, это то, что вы хотите?

; WITH ca1 AS 
(
    SELECT 
      standard_matches, -- missing comma 
      bonus_match 
     from #draws 
    CROSS APPLY 
     ( 
     SELECT 
      CASE WHEN Winningball1 IN (@Ball1, @Ball2, @Ball3, @Ball4, @Ball5, @Ball6) THEN 1 end + 
      CASE WHEN Winningball2 IN (@Ball1, @Ball2, @Ball3, @Ball4, @Ball5, @Ball6) THEN 1 ENd + 
      CASE WHEN Winningball3 IN (@Ball1, @Ball2, @Ball3, @Ball4, @Ball5, @Ball6) THEN 1 END + 
      CASE WHEN Winningball4 IN (@Ball1, @Ball2, @Ball3, @Ball4, @Ball5, @Ball6) THEN 1 END + 
      CASE WHEN Winningball5 IN (@Ball1, @Ball2, @Ball3, @Ball4, @Ball5, @Ball6) THEN 1 END + 
      CASE WHEN Winningball6 IN (@Ball1, @Ball2, @Ball3, @Ball4, @Ball5, @Ball6) THEN 1 END as standard_matches, 
      CASE WHEN Bonusball1 IN (@Ball1, @Ball2, @Ball3, @Ball4, @Ball5, @Ball6) THEN 1 END + 
      CASE WHEN Bonusball2 IN (@Ball1, @Ball2, @Ball3, @Ball4, @Ball5, @Ball6) THEN 1 END as bonus_match 
     ) a 
) 
UPDATE g 
SET gwn = ca1.standard_matches, 
    gsn = ca1.bonus_match 
FROM #game g 
CROSS JOIN ca1 
WHERE g.gno = 1 
+0

Спасибо за ваш ответ, я все равно получаю ошибочное недопустимое имя столбца для standard_matches и bonus_match в операциях select и update. аргумент case может видеть столбец как int – Gary

+0

, можете ли вы опубликовать свой последний запрос? – Squirrel

+0

Привет Squirrel имена столбцов не совпадают, это код – Gary

Смежные вопросы