Вы можете достичь этого двумя способами:
--- Метод 1 ---
Объедините два подзапроса следующим образом:
SELECT
A.ORDER_NUMBER,
A.PROD_ID,
A.UPC_ID,
B.COLOR,
B.SIZE,
A.ORDER_DATE
FROM
(
SELECT
ORDER.ORDER_NUMBER,
UPC.PROD_ID,
SHIPMENTITEM.UPC_ID,
ORDER.ORDER_DATE
FROM
SHIPMENT SHIPMENT,
ORDER ORDER,
SHIPMENT_ITEM SHIPMENTITEM,
UPC UPC
WHERE
ORDER.ORDER_DATE > CURRENT timestamp - 24 months
AND ORDER.ORDER_NUMBER = SHIPMENT.ORDER_NUMBER
AND SHIPMENTITEM.SHIPMENT_ID = SHIPMENT.SHIPMENT_ID
AND ORDER.USER_ID = '123456'
AND UPC.UPC_ID = SHIPMENTITEM.UPC_ID
) A
JOIN (
SELECT
UPC_ID,
MAX(CASE
WHEN ATTR_NAME = 'COLOR_NORMAL' THEN ATTR_VALUE
END) AS COLOR,
MAX(CASE
WHEN ATTR_NAME = 'SIZE' THEN ATTR_VALUE
END) AS SIZE
FROM
UNARY_UPC_ATTR_VAL
WHERE
UPC_ID IN (
38890630,
10855,
23431431
)
GROUP BY
UPC_ID
) B ON ( A.UPC_ID = B.UPC_ID )
ORDER BY
A.ORDER_DATE DESC WITH UR
-
--- Метод 2 ---
Используйте таблицу UNARY_UPC_ATTR_VAL
в первом запросе и выполните GROUP BY
следующим образом:
SELECT
ORDER.ORDER_NUMBER,
UPC.PROD_ID,
SHIPMENTITEM.UPC_ID,
MAX(CASE
WHEN ATTR_NAME = 'COLOR_NORMAL' THEN ATTR_VALUE
END) AS COLOR,
MAX(CASE
WHEN ATTR_NAME = 'SIZE' THEN ATTR_VALUE
END) AS SIZE,
ORDER.ORDER_DATE
FROM
SHIPMENT SHIPMENT,
ORDER ORDER,
SHIPMENT_ITEM SHIPMENTITEM,
UPC UPC,
UNARY_UPC_ATTR_VAL UUAV -- ADDED THIS TABLE HERE
WHERE
order.ORDER_DATE >current timestamp - 24 months
AND ORDER.ORDER_NUMBER = SHIPMENT.ORDER_NUMBER
AND SHIPMENTITEM.SHIPMENT_ID = SHIPMENT.SHIPMENT_ID
AND ORDER.USER_ID = '123456'
AND UPC.UPC_ID = SHIPMENTITEM.UPC_ID
-- ADDED FOLLOWING CONDITION AND JOIN HERE
AND UUAV.UPC_ID IN (
38890630,
10855,
23431431
)
AND UUAV.UPC_ID = UPC.UPC_ID
-- ADDED FOLLOWING GROUP BY
GROUP BY
ORDER.ORDER_NUMBER,
UPC.PROD_ID,
SHIPMENTITEM.UPC_ID,
ORDER.ORDER_DATE
ORDER BY
ORDER.ORDER_DATE DESC WITH UR
Надеюсь, это вам поможет.
Ура !!