此SQL显示我正在使用的示例数据集
create table #tmp1
(
Account varchar(18),
CaseID varchar(18),
DT datetime,
Person varchar(100),
Updated varchar(18)
)
insert into #tmp1 Select 'MyAcccount', '12345', '1/1/13', 'me', 'Someone'
insert into #tmp1 Select 'MyAcccount', '12346', '2/1/13', null, null
insert into #tmp1 Select 'MyAcccount', '12347', '3/1/13', null, null
insert into #tmp1 Select 'MyAcccount', '12348', '4/1/13', null, null
insert into #tmp1 Select 'MyAcccount', '12349', '5/1/13', null, null
insert into #tmp1 Select 'MyAcccount', '12350', '6/1/13', null, null
insert into #tmp1 Select 'MyAcccount', '12351', '7/1/13', 'myself', 'Someone'
insert into #tmp1 Select 'MyAcccount', '12352', '8/1/13', null, null
insert into #tmp1 Select 'MyAcccount', '12353', '9/1/13', null, null
insert into #tmp1 Select 'MyAcccount', '12354', '10/1/13', null, null
insert into #tmp1 Select 'MyAcccount', '12355', '11/1/13', 'I', 'Someone'
insert into #tmp1 Select 'MyAcccount', '12356', '12/1/13', null, null
insert into #tmp1 Select 'MyAcccount', '12357', '1/1/14', 'Irene', 'Someone'
insert into #tmp1 Select 'MyAcccount', '12358', '2/1/14', null, null
insert into #tmp1 Select 'MyAcccount', '12359', '3/1/14', null, null
insert into #tmp1 Select 'MyAcccount', '12360', '4/1/14', null, null
insert into #tmp1 Select 'MyAcccount', '12361', '5/1/14', 'Olivia', 'Someone'
insert into #tmp1 Select 'MyAcccount', '12362', '6/1/14', null, null
insert into #tmp1 Select 'MyAcccount', '12363', '7/1/14', null, null
insert into #tmp1 Select 'MyAcccount', '12364', '8/1/14', null, null
insert into #tmp1 Select 'MyAcccount', '12365', '9/1/14', null, null
insert into #tmp1 Select 'MyAcccount', '12366', '10/1/14', null, null
insert into #tmp1 Select 'MyAcccount', '12367', '11/1/14', null, null
insert into #tmp1 Select 'MyAcccount', '12368', '12/1/14', 'izzy', 'Someone'
select * from #tmp1
Order by Account, DT
我需要做的是更新Person
列中具有空值的每一行中的Updated
列,使其与前一行匹配,而不管{{{ 1}}列。
但是我被要求不使用光标。我一直试图找到一种没有光标的方法,但到目前为止还不是很成功。
有没有人能够在没有光标的情况下做这样的事情?
答案 0 :(得分:0)
你可以这样做,假设你的id是唯一的,顺序无差距的:
UPDATE #tmp1
SET Person = (SELECT Person FROM #tmp T2 WHERE T1.CaseID = T2.CaseID + 1)
FROM #tmp T1
答案 1 :(得分:0)
UPDATE #TMP1
SET person =<value> or (select updated from #tmp1)
WHERE updated = NULL
如果要在字段内的值中键入任何默认值。如果要更新列的对应值,请使用子查询。