在SQL中,我有一个表,看起来像这样:
enter image description here
我想根据“Seq_Number”将每个“id_Parent_Record”的“Value_New”中的值组合起来,这意味着它应该始终从1开始。
例如,637454609993200总共有4个移动,用于“Field_Changed”=“Task_Workflow”。
预期的输出应该完全像这样:
初始转介-〉IRU -〉批准调整-〉结算
这是我目前所在的代码:
select ac."id_Parent_Record"
,ac."Field_Changed"
,ac."Value_Previous"
,ac."Value_New"
,ac."Changed_Date"
,row_number() over (partition by "id_Parent_Record", "Field_Changed" order by "Changed_Date" asc) as "Seq_Number"
from public.api_changelog ac
where ac."Field_Changed" IN ('_id_Matter','Task_Workflow')
and ac."id_Parent_Record" = '637454609993200';
预期输出应包含一个名为“Transitions”的新字段,对于帐户637454609993200,每行的值应如下所示,其中Field_Change等于Task_Workflow:
初始转介-〉IRU -〉批准调整-〉结算
2条答案
按热度按时间nxagd54h1#
STRING_AGG
函数应该能够实现这一点。每个
Value_New
应该由' -> '
分隔,并且应该由Changed_Date
字段排序。需要包含GROUP BY
。输出:
| id_Parent_Record|字段_已更改|过渡|
| --------------|--------------|--------------|
| 637454609993200|_id_Matter|637417579791350|
| 637454609993200|任务_工作流|初始转介-〉IRU -〉批准调整-〉结算|
CTE可用于将表重新联接回原始结果集
uujelgoq2#
对于一个典型的数据仓库维度表,数据应该是这样的。我并不是要你接受答案,而是要展示它如何简化你的查询。不需要查询。
surr_key(代理项键)= Seq_Number
nat_key(natural key)= id_Parent_Record
与您的数据模型相比,此数据模型的一个缺点是,当操作数据库(上游)中的列发生更改、添加新列或删除列时,需要重新构建上面的维度表,并使用新DDL移动数据。