我有一张表,其中包含“Id”、“ParentId”和“CreatedDate”。如果该行是原始提交,它将没有“ParentId”。当对原始提交进行编辑时,会创建一个新行,其中 NewRow."ParentId" = Original."Id"。从那里进行的每个新编辑都将采用正确的“ParentId”。这提供了一种查看编辑历史的方法。
现在进行查询。我匆忙收集了一个查询,该查询将获取所有最新且唯一的条目。例如。如果我有 3 个独特的原始表格。我只想查看他们最近的修订版(最近的孩子),除非他们没有,在这种情况下,我想要“ParentId”为空的原始版本。
这是我正在使用的查询:
SELECT DISTINCT A.*
FROM "dbo"."customercomplaint" AS A
RIGHT OUTER JOIN "dbo"."customercomplaint" AS B
ON B."parentid" != A."id"
WHERE A."parentid" IS NULL
AND A."id" IS NOT NULL
UNION
SELECT t1.*
FROM "dbo"."customercomplaint" t1
JOIN (SELECT "parentid" AS id,
Max("createddate") AS "CreatedDate"
FROM "dbo"."customercomplaint"
GROUP BY id) t2
ON t1."parentid" = t2.id
AND t1."createddate" = t2."createddate"
这个查询对我来说有点草率,我想寻找一个更好的解决方案。让我知道是否需要任何进一步的信息。我感谢任何建议。