Я не совсем уверен в вашем вопросе, хотите ли вы только отдельные значения ITEMNAME, которые связаны с несколькими значениями NPD; если вам нужны разные комбинации ITEMNAME и NPD, где ITEMNAME имеет несколько значений NPD; или если вы хотите, чтобы все значения NPD для каждого ИМЯ ПУНКТА, которые имеют несколько значений NPD. Итак, давайте сделаем их все:
Чтобы получить отдельные ИМЯ, связанные с несколькими значениями NPD, вы можете использовать:
WITH cteBase_data AS
(SELECT it.ITEMNAME, pr.NPD
FROM RTRPRDB.JPIPELINESYSTEM pl
INNER JOIN RTRPRDB.JNAMEDITEM it
ON it.OID = pl.OID
INNER JOIN RTRPRDB.XSYSTEMHIERARCHY x
ON x.OIDORIGIN = pl.OID
INNER JOIN RTRPRDB.JRTEPIPERUN pr
ON pr.OID = x.OIDDESTINATION),
cteItems_of_interest AS
(SELECT ITEMNAME
FROM (SELECT DISTINCT ITEMNAME, NPD
FROM cteBase_data)
GROUP BY ITEMNAME
HAVING COUNT(*) > 1)
SELECT ii.ITEMNAME
FROM cteItems_of_interest ii
ORDER BY ii.ITEMNAME
Чтобы получить различные комбинации ИМЯНЯ и NPD для всех ИМЕНИ с Несколько значений NPD, которые вы можете использовать:
WITH cteBase_data AS
(SELECT it.ITEMNAME, pr.NPD
FROM RTRPRDB.JPIPELINESYSTEM pl
INNER JOIN RTRPRDB.JNAMEDITEM it
ON it.OID = pl.OID
INNER JOIN RTRPRDB.XSYSTEMHIERARCHY x
ON x.OIDORIGIN = pl.OID
INNER JOIN RTRPRDB.JRTEPIPERUN pr
ON pr.OID = x.OIDDESTINATION),
cteItems_of_interest AS
(SELECT ITEMNAME
FROM (SELECT DISTINCT ITEMNAME, NPD
FROM cteBase_data)
GROUP BY ITEMNAME
HAVING COUNT(*) > 1)
SELECT DISTINCT bd.ITEMNAME, bd.NPD
FROM cteBase_data bd
INNER JOIN cteItems_of_interest ii
ON ii.ITEMNAME = bd.ITEMNAME
ORDER BY ITEMNAME, NPD
И чтобы получить все строки, в которых ITEMNAME связан с несколькими значениями NPD, вы можете использовать:
WITH cteBase_data AS
(SELECT it.ITEMNAME, pr.NPD
FROM RTRPRDB.JPIPELINESYSTEM pl
INNER JOIN RTRPRDB.JNAMEDITEM it
ON it.OID = pl.OID
INNER JOIN RTRPRDB.XSYSTEMHIERARCHY x
ON x.OIDORIGIN = pl.OID
INNER JOIN RTRPRDB.JRTEPIPERUN pr
ON pr.OID = x.OIDDESTINATION),
cteItems_of_interest AS
(SELECT ITEMNAME
FROM (SELECT DISTINCT ITEMNAME, NPD
FROM cteBase_data)
GROUP BY ITEMNAME
HAVING COUNT(*) > 1)
SELECT bd.ITEMNAME, bd.NPD
FROM cteBase_data bd
INNER JOIN cteItems_of_interest ii
ON ii.ITEMNAME = bd.ITEMNAME
ORDER BY ITEMNAME, NPD
дБ <> скрипка здесь