다음 쿼리에 대한 도움이 필요합니다.동일한 테이블의 필드를 기반으로 oldID 필드를 업데이트하십시오.
create table #table1
(id int not null primary key identity,
customer_name varchar(25),
usage float,
oldID int null
)
insert into #table1 values('ABC',46.5,null)
insert into #table1 values('ABC',46.5,null)
insert into #table1 values('DEF',36.8,null)
insert into #table1 values('XYZ',50.1,null)
insert into #table1 values('DEF',36.8,null)
insert into #table1 values('XYZ',50.1,null)
select * from #table1
나는 나의 표는이
id customer_name usage oldID
----------- ------------------------- ---------------------- -----------
1 ABC 46.5 NULL
2 ABC 46.5 1
3 DEF 36.8 NULL
4 XYZ 50.1 NULL
5 DEF 36.8 3
6 XYZ 50.1 4
- 처럼 같은 이름을 가진 두 개의 기록을 갱신하고 사용이 나중에 기록이 갱신되었음을 의미합니다.
- 새 레코드에서 oldID 필드는 이전 레코드 (ID)를 가리켜 야합니다.
실제 테이블에는 사용할 수있는 날짜 입력란이 있지만 지금은 도움이 될 것입니다. 해당 고객의 ID
가 최소 ID가 아닌 경우 다음 OldID
그 ID
값으로 설정되어 Data
CTE는 기본적으로 그냥 각 고객의 최소 ID
을 결정
;WITH data AS
(
SELECT
id, customer_name,
OldID = (SELECT MIN(id) FROM #table1 t2 WHERE t2.customer_name = t.customer_name)
FROM #table1 t
)
UPDATE #table1
SET OldID = data.OldID
FROM Data
WHERE
data.customer_Name = #table1.customer_name
AND #table1.ID <> data.oldid
select * from #table1
, 그리고 :
한 준비. – danihp