在 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