【发布时间】:2021-11-10 21:32:25
【问题描述】:
我是 SQL 的新手,所以这可能是一个愚蠢的问题。我想在 TR_VALUE.NEW VALUE 中查找重复值,并显示其他记录中其他列的其他列信息。例如。 TR_VALUE.OLD_VALUE。
如果我删除 TR_VALUE.OLD_VALUE,以下查询运行良好,但我想显示有关重复项的其他数据。
SELECT
"TR_VALUE"."NEW_VALUE", "TR_VALUE"."OLD_VALUE",
COUNT("TR_VALUE"."NEW_VALUE")
FROM
(("DB1"."WORKORDER" "WORKORDER"
LEFT OUTER JOIN
"DB1"."TR_VALUE" "TR_VALUE" ON "WORKORDER"."FG_LOTNO" = "TR_VALUE"."NEW_VALUE")
LEFT OUTER JOIN
"DB1"."STANDARD" "STANDARD" ON "WORKORDER"."STANDARD_ID" = "STANDARD"."ID")
LEFT OUTER JOIN
"DB1"."TR_BATCH" "TR_BATCH" ON "TR_VALUE"."TR_BATCH_ID" = "TR_BATCH"."ID"
GROUP BY
"TR_VALUE"."NEW_VALUE"
HAVING
COUNT("TR_VALUE"."NEW_VALUE") > 1
【问题讨论】:
-
那么请显示一些示例数据以及您的结果应该是什么样子。如果 new_value 123 被找到四次,则最多有四个不同的旧值。你想如何显示它们?
-
请让您的查询可读。全部大写使阅读变得困难。没有缩进让阅读变得困难。您也可以删除所有那些讨厌的双引号。您可以使用简短的助记表别名,例如w 代表工作订单,v 代表 tr_value,s 代表标准。只有我吗?我发现带括号的连接很难阅读。它们在您的查询中完全是多余的。我会删除它们。最后突出显示 SQL 语句,使用
{}按钮将其格式化为代码。 -
DBMS - Oracle 11g。很抱歉查询的格式,我从 Crystal Reports 导出了查询,它把所有内容都用大写。我会解决的。
-
我想并排显示包含重复项的新值和旧值。因此,对于 4 个重复项,将有 4 个不同的旧值。
-
好的,请告诉我们。组成几个示例行,然后显示您希望在结果中包含的行和列。如前所述,每个新值可以有很多旧值,那么这应该如何准确地显示在结果中?查询结果是一个表。该结果表应有多少列?它们将包含什么?