5

このようなテーブルがあります

CREATE TABLE [dbo].[tblUserLink](
    [IDUserLink] [int] IDENTITY(1,1) NOT NULL,
    [IDUser] [int] NOT NULL,
    [IDRegie] [varchar](50) NOT NULL,
    [DefaultAgency] [bit] NULL
)

フィールド DefaultAgency を更新するクエリ/スクリプトを探しています。同じ IDUser を持つレコードの各グループに来る最初のレコードに対して 1 に設定したいと思います。

例 :

IDUserLink IDUser IDRegie DefaultAgency (Goal)
1          1      1       null           DefaultAgency to be set to 1
2          1      2       null
3          1      3       null
4          2      2       null           DefaultAgency to be set to 1
5          2      1       null     
6          3      1       null           DefaultAgency to be set to 1
 ...etc 

単純な sql クエリを使用してこれを実現できますか、それともスクリプトを作成する必要がありますか?

4

2 に答える 2

6

SQL Server 2005 以降を使用している場合は、共通のテーブル式を使用できます。

with cte as (
   select *,
      row_number() over (partition by IDUser order by IDUserLink) as [rn]
   from tblUserLink
)
update c
set DefaultAgency = 1
from cte as c
where c.rn = 1
于 2012-10-17T14:22:51.343 に答える