我有一个物化视图Postgres 9.3,我想用新列进行更新。但是,其他物化视图也依赖于该视图,并且错误消息表明当其他对象依赖于该视图时,无法删除该视图。
错误:无法删除物化视图 latest_charges 因为其他对象依赖它
从文档中还可以看出 REPLACE 关键字对物化视图无效。除了删除所有依赖对象并重建每个对象之外,还有其他捷径吗?
我正在处理 SQL Server 2008 中的一种情况,其中每个客户端都设置为自己的数据库,每个数据库都具有相同的表结构。
我有一个查询,它从数据库中的 ~20 个不同表中进行选择,并将记录插入到报告数据库中。我们想要做的是对每个数据库重复此过程,以便跨所有客户端数据库的所有报告信息都包含在统一报告数据库中。
“简单”的方法是只复制/粘贴代码并在数据库名称上查找/替换所有内容,以使脚本在所有客户端上执行。还有比这更好的方法吗?
我在 Sql Server 2008 中有两个表,看起来像这样:
Transaction_Details:
Dataset,
Department,
Charge_ID,
Transaction_Type,
dos_month,
post_month,
amount
Charge_Summary
Dataset,
Department,
Charge_ID,
dos_month,
Ins1_Category
Run Code Online (Sandbox Code Playgroud)
我正在寻找的输出看起来像这样:Dataset、Department、Ins1_Category、dos_month、Post_Month、Total_Payments、Total_Charges、Previous_Balance -- 定义为所有匹配交易的总金额,与当前月之前的 post_month
我在下面使用的 SQL 给出了预期的输出,但执行计划中有一个索引查找占用了 90% 以上的成本。这是在数据仓库操作中,因此除了此查询之外,服务器上没有其他活动,无需担心其他读取或写入。大约 30 分钟的执行时间对于它的用途来说是可以接受的,但如果有更好的方法来做到这一点,我仍然需要一些建议。
SELECT
t1.Dataset,
t1.Department,
c1.Ins1_Category,
t1.dos_month,
t1.post_month,
SUM(case
when t1.transaction_type = 'payment' THEN t1.amount
ELSE 0
END
) AS total_payments,
SUM(case
when t1.transaction_type = 'adjustment' THEN t1.amount
ELSE 0
END
) AS total_adjustments,
SUM(case
when t1.transaction_type = 'charge' THEN t1.amount
ELSE 0
END
) AS total_charges,
(
SELECT
SUM(t2.amount)
FROM
Transaction_Details …Run Code Online (Sandbox Code Playgroud)