【发布时间】:2020-09-04 07:54:09
【问题描述】:
向资深同事问好。我被这件事缠住了。 构造时需要根据load_date字段的状态替换CASE中的对应值。 问题是第二个被分配了一个值到 mean_v 字段基于对子样本获得的平均 mean_v 的计算。 那么何时实现价值获取与赋值呢? 我试图创建别名,别名()作为(),但sql在WITH附近抛出语法错误。 我必须从子集中分配一个平均值,其中列对应于每行的当前行 什么问题?我可以在 CASE 中使用 WITH 吗?
UPDATE public.table
set mean_v =
CASE
WHEN table.load_date IS NOT NULL
THEN
DATEDIFF(day, CONVERT(date, table.load_date),CONVERT(date, table.req_date))
WHEN table.load_date IS NULL
THEN
--(select id, customer, code, mean_v from public.data) as t
--wish use this to set for load_date per row:
--select AVG(t.mean_v) from t, public.table
--where t.customer = table.customer
--and t.code = table.code
END```
【问题讨论】:
-
回答你最后一个问题:不,你不能在
case表达式中使用with。也就是说,很可能存在替代解决方案。请提供一些示例数据和预期输出。 -
样本数据和期望的结果真的很有帮助。
标签: sql sql-server sql-update subquery