在 CASE 构造中使用 WITH 和子集
Using WITH and subset in CASE construction
向资深同事问好。我陷入了这件事。
根据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```
也许是这样的
UPDATE t
set mean_v =
CASE
WHEN load_date IS NOT NULL
THEN
DATEDIFF(day, CONVERT(date, load_date),CONVERT(date, req_date))
WHEN load_date IS NULL
THEN (
SELECT AVG(tt.mean_v)
FROM public.table tt
WHERE t.customer = tt.customer
and t.code = tt.code
)
END
FROM public.table t
向资深同事问好。我陷入了这件事。 根据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```
也许是这样的
UPDATE t
set mean_v =
CASE
WHEN load_date IS NOT NULL
THEN
DATEDIFF(day, CONVERT(date, load_date),CONVERT(date, req_date))
WHEN load_date IS NULL
THEN (
SELECT AVG(tt.mean_v)
FROM public.table tt
WHERE t.customer = tt.customer
and t.code = tt.code
)
END
FROM public.table t