[英]How to get desired result in SQL Server?
我有如下表:
表一:
ID COLUMN1 COLUMN2 COLUMN3
-------------------------------
1 123 A12 INDIA
2 134 A12 INDIA
3 425 B124 UNITED STATES
4 500 B124 UNITED STATES
5 525 A12 AUSTRALIA
TABLE A 转换为 TABLE B,按 COLUMN2 和 COLUMN3 分组
表B:
ID COLUMN1 COLUMN2 COLUMN3
----------------------------------
1 123,134 A12 INDIA
2 425,500 B124 UNITED STATES
3 525 A12 AUSTRALIA
现在,如果表 A 中的值更新,例如第 2 行被删除。 更新后的表A:
ID COLUMN1 COLUMN2 COLUMN3
---------------------------------------
1 123 A12 INDIA
2 425 B124 UNITED STATES
3 500 B124 UNITED STATES
4 525 A12 AUSTRALIA
现在我必须在 TABLE B 上更新相同的内容以获得低于输出,而不截断数据。
ID COLUMN1 COLUMN2 COLUMN3
-------------------------------------
1 123 A12 INDIA
2 425,500 B124 UNITED STATES
3 525 A12 AUSTRALIA
我如何获得这个输出? 由于我无法删除 TABLE B 中的第 1 行,因此不应更改 ID 列。
我试过使用 XML 拆分分隔字符串。
从有限的信息来看,我认为您想要使用触发器沿着这些方向进行操作:
CREATE OR REPLACE TRIGGER DEL_TABLEA_TRG
AFTER DELETE ON tableA
FOR EACH ROW
BEGIN
UPDATE tableB
SET column1=x, column2=y
WHERE tableB.column3 = :old.tablea_column3;
END DEL_TABLEA_TRG;
因此,每次在 tableA 上删除一行时,都会触发,并使用从 tableA 读取的新数据更新 tableB 上的行(您必须使用适当的 SQL 来执行此操作)
您还必须为插入和更新创建触发器。
或者,创建一个运行您最初使用的 SQL 的视图,这将为您提供看起来像 tableB 并且始终自动更新的内容(尽管性能可能是一个问题,具体取决于您的使用情况)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.