【发布时间】:2021-01-11 10:56:35
【问题描述】:
当相关表 SoldItems 具有相同的唯一标识符时,我需要更新名为 AccountBase 的表中的标志,但难的是,我需要找到最新销售的产品并将其 SellDatetime 与当前时间进行比较。当 6 年内售出的最新产品时,我想将标志设置为 1,否则设置为 0。
AccountBase 和SoldItems 是1:N 连接的,一个账号可以卖多件商品,所以我需要在SoldItems 中的SellDatetime 下单。
这是我的尝试,但设置不正确,但存在的内部查询返回正确的值:
UPDATE acc
SET acc.SoldInLastSixYears = CASE WHEN DATEDIFF(DAY, hk.SellDatetime, GETDATE())/ 365.2425 >= 6 THEN 0
ELSE 1
END
FROM [AccountBase] acc INNER JOIN SoldItems hk ON acc.AccountId=hk.Owner
where EXISTS(select top(1) SellDatetime From SoldItems where
SellDatetime is not null AND Owner is not null
AND Owner=acc.AccountId order by SellDatetime desc)
当我尝试使用内部查询值时出现错误,我 sql 无法识别 'hk':
UPDATE acc
SET acc.SoldInLastSixYears = CASE WHEN DATEDIFF(DAY, hk.SellDatetime, GETDATE())/ 365.2425 >= 6 THEN 0
ELSE 1
END
FROM [AccountBase] acc
where EXISTS(select top(1) SellDatetime From SoldItems hk where
SellDatetime is not null AND Owner is not null
AND Owner=acc.AccountId order by SellDatetime desc)
请高人帮帮我,应该怎么做?
【问题讨论】:
标签: sql sql-server dynamics-crm