-3

目标是在每个segment_code地方标记 1 条记录,Mtg_Flag = 1如果记录没有,Mtg_Flag = 1则使用 标记该记录Mtg_Flag = 0。代码会将所有记录标记Mtg_Flag = 1为一个,但是一旦运行,您如何将剩余记录标记在哪里Mtg_Flag = 0。我的示例有 153 个不同的segment_codes,只有 146 个带有Mtg_Flag = 1. 那么,我如何标记剩余的 7 个segment_codeswhere Mtg_Flag = 0

代码:

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
4

1 回答 1

1

您可以直接更新 CTE;您正试图使后续查询过于复杂:

;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 的行时,您会如何期望更新这些行...

于 2013-07-30T18:57:40.627 回答