db2 SQL帮助-检测指定值列表中的更改

rm5edbpk  于 2022-11-07  发布在  DB2
关注(0)|答案(2)|浏览(173)

我需要创建一个报表,以返回帐户类型已更改为以下account_types列表或从以下account_types列表更改的客户帐户:(“凸轮”、"凸轮轴"、“凸轮轴”、“凸轮轴轴轴”、“距离”、“距离”、"加"、"加“、”拉姆“、"拉姆”)。
假设我今天有这张表:
| 委托人|帐户类型|客户组织标识|插入日期|更新日期|活动_Y_N|
| - -|- -|- -|- -|- -|- -|
| 谷歌|总经理|编号000001| 2006年05月04日09:15:34| 2020年5月4日06:01:16| Y型|
| 网飞公司|拉穆|编号:C 000002| 2006年05月04日09:15:34| 2021年9月4日08:35:34| Y型|
| 诺德斯特龙|距离|编号C 000003| 2006年05月04日09:15:34| 2021年5月4日02:15:34| Y型|
| 好市多|CAMHDADP公司|编号:C 000004| 2006年05月04日09:15:34| 2021年5月4日09:36:34| Y型|
| 波音公司|CAMHD计算机辅助制造|编号C 000005| 2006年05月04日09:15:34| 2021年5月4日12时15分45秒|Y型|
| 三星电子|远端|编号C 000006| 2006年05月04日09:15:34| 2020年6月15日01:10:16| Y型|
假设我明天开始工作,第1、2、3、5和6行(粗体显示)发生了更改。
| 委托人|帐户类型|客户组织标识|插入日期|更新日期|活动_Y_N|
| - -|- -|- -|- -|- -|- -|
| 谷歌|摄像机| 编号000001| 2006年05月04日09:15:34|2021年11月3日12时40分41秒| Y型|
| 网飞公司|距离| 编号:C 000002| 2006年05月04日09:15:34|2021年11月3日12时40分41秒| Y型|
| 诺德斯特龙|GAMADP| 编号C 000003| 2006年05月04日09:15:34|2021年11月3日12时40分41秒| Y型|
| 好市多|CAMHDADP公司|编号:C 000004| 2006年05月04日09:15:34| 2021年5月4日09:36:34| Y型|
| 波音公司|未知| 编号C 000005| 2006年05月04日09:15:34|2021年11月3日12时40分41秒| Y型|
| 三星电子|远端|编号C 000006| 2006年05月04日09:15:34|2021年11月3日12时40分41秒||
我需要一个SQL查询,它将返回这三行数据,因为我在开头提到的account_types列表中的account_type已被更新。
| 委托人|帐户类型|客户组织标识|插入日期|更新日期|活动_Y_N|
| - -|- -|- -|- -|- -|- -|
| 谷歌|计算机辅助制造|编号000001| 2006年05月04日09:15:34| 2021年11月03日12时40分41秒|Y型|
| 网飞公司|远端|编号:C 000002| 2006年05月04日09:15:34| 2021年11月03日12时40分41秒|Y型|
| 诺德斯特龙|GAMADP系统|编号C 000003| 2006年05月04日09:15:34| 2021年11月03日12时40分41秒|Y型|
我正在DB2 LUW数据库中工作。

wz1wpwve

wz1wpwve1#

尝试将mytab更改为真实的的表名。

ALTER TABLE mytab ADD UPDATE_AT_DATE TIMESTAMP;

CREATE OR REPLACE TRIGGER mytab_BUR
BEFORE UPDATE OF ACCOUNT_TYPE ON mytab
REFERENCING NEW AS N OLD AS O
FOR EACH ROW
WHEN 
(
--     O.ACCOUNT_TYPE IS DISTINCT FROM N.ACCOUNT_TYPE
--  AND
--  (
     O.ACCOUNT_TYPE IN ('CAM','CAMADP','CAMHD','CAMHDADP','DIST','DISTADP','GAM','GAMADP','LAM','LAMADP')
  OR N.ACCOUNT_TYPE IN ('CAM','CAMADP','CAMHD','CAMHDADP','DIST','DISTADP','GAM','GAMADP','LAM','LAMADP')
--  )
)
SET N.UPDATE_AT_DATE = CURRENT TIMESTAMP 
;

如果您的应用程序可能会使用与ACCOUNT_TYPE列已有的值相同的值更新该列,而您不希望在这种情况下更新新的UPDATE_AT_DATE列值,则可以取消注解掉的行。

相关问题