繁体   English   中英

在公用表表达式中使用更新

[英]Using Update in a Common Table Expression

以下是CTE,它是较大查询的一部分。 我正在尝试一些简单的事情:用“ 2016-10”更新或替换“ 2016-11”或“ 2016-12”值的所有记录。

查询在UPDATE时发生错误。 这里是否有替代方法可以使此查询正常工作?

with q (month, cobrand, members) as
(select date_trunc('month',optimized_transaction_date), cobrand_id, 
count(distinct unique_mem_id)
from yi_fourmpanel.card_panel
Where (cobrand_id = '10001372' or cobrand_id = '10005640' or cobrand_id = '10005244') 
group by 1,2)

UPDATE q
SET members = dc
FROM (SELECT cobrand, members dc
      FROM q
      WHERE month = '2016-10') x
WHERE q.cobrand = x.cobrand
AND month IN ('2016-11', '2016-12')

如果您不想更改表数据,请不要使用UPDATE

要实现您想要的功能,请编写类似于以下内容的主查询:

WITH q(month, cobrand, members) AS (...)
SELECT
   month,
   cobrand,
   CASE WHEN month IN ('2016-11', '2016-12')
        THEN (SELECT members
              FROM q q1
              WHERE q1.month = '2016-10')
        ELSE members
   END
FROM q;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM