我正在尝试将数据库中的值组合在一起,以便那些不是软件开发人员的人更容易想到解决方案。下面是数据库的外观示例。当技术人员更改公司的现有价值时,它会创建如下所示的3个条目。
我要做的是将其连接成"{user} updated {old city} to {new city}"
之类的东西。我想把它放在一个名为Description的新列中,该行包含" new value"旗帜,但不想触摸没有旧价值的行#34;或者"新价值"因为有许多不同的标志用于他们可能正在进行的更改类型。我真的不确定如何组合这样的行。
标记为"num"
的部分特定于每个正在进行的更改,并且只有像示例中的那个组具有相同的值,所以我想也许我可以以某种方式使用group by来清除任何更改那些只需要一行,因为我只是寻找下面格式的块。
_ id_|_CompName |_val_flag | value _|num|user|______updated______
1224 |Test company|old_value |Old City|594|user|2017-07-28 15:42:58.117
1225 |Test company|new_value |New City|594|user|2017-07-28 15:42:58.117
1226 |Test company|rec_value |New City|594|user|2017-07-28 15:42:58.117
答案 0 :(得分:0)
首先要提出几个问题。
看起来像" GROUP BY" USER是从哪里开始的。根据USER和NUM编写GROUP BY。
如下所示。 Oracle SQL语法(未经测试)。
SELECT USER ||' updated ' || OLD_VAL || ' to ' || NEW_VAL AS DESCRIPTION
FROM (
SELECT AUD.USER
, MAX(CASE WHEN _VAL_FLAG = 'old_value' THEN VALUE END) OLD_VAL
, MAX(CASE WHEN _VAL_FLAG = 'new_value' THEN VALUE END) NEW_VAL
FROM AUDIT_TABLE AUD
GROUP BY AUD.USER, NUM)