2013-07-30 3 views
-3

Цель состоит в том, чтобы отметить 1 запись за segment_code, где Mtg_Flag = 1, если в записи нет Mtg_Flag = 1, тогда отметьте запись с Mtg_Flag = 0. Код будет отмечать все записи с Mtg_Flag = 1 до одного, но как только это будет запущено, как вы отмечаете оставшиеся записи, где Mtg_Flag = 0. Мой пример имеет 153 отдельных segment_codes и только 146 с Mtg_Flag = 1. Итак, как я могу отметить оставшиеся 7 segment_codes, где Mtg_Flag = 0.Записи флага в SQL Server 2005

Код:

With LiveSam as (
Select acct_id,Row_Number() Over(Partition By Segment_Code Order By NewID()) 
    as  RowNumber 
From Table_tr 
Where LiveSam is NULL and seedrecordindicator is null and HasMtg_Flag = '1') 

Update Table_tr 
Set LiveSam = 'Y' 
From LiveSam L 
Where Table_tr.acct_id = L.acct_id 
    and L.RowNumber < 2 
    and Table_tr.acct_id is not NULL 

ответ

1

Вы можете обновить КТР непосредственно; вы пытаетесь сделать последующий запрос слишком сложным:

;WITH cte as -- don't call this a column name. Confusing. 
(
    Select acct_id,Row_Number() Over 
    (Partition By Segment_Code Order By NewID()) as RowNumber 
    From Table_tr 
    WHERE LiveSam is NULL 
    and acct_id IS NOT NULL 
    and seedrecordindicator is null 
    and HasMtg_Flag = '1' 
) 
UPDATE cte 
Set LiveSam = 'Y' 
Where RowNumber = 1; 

Я думаю, это то, что вам нужно на основе вашего запроса, но если вы хотите, чтобы люди точно следовать вашей проблеме слова, пожалуйста, показать некоторые выборочные данные перед обновление и желаемые результаты после. Я понятия не имею, как вы когда-либо ожидали обновления строк, где Mtg_Flag = 0, когда вы их исключили, в первую очередь ...

+0

Да, это работает. Я сделал еще один шаг, используя переменные, чтобы добавить дополнительные 7 записей. Благодаря! – user2635406