Я пытаюсь объединить несколько подзапросов, чтобы избежать попаданий в массивный стол (42B строк) несколько раз и получитьМульти СЛУЧАЯ Колонка КОГДА в Teradata
«[3771] Незаконное выражение в том, когда раздел CASE. "
,SUM(CASE
WHEN (oh.LOCN_NBR,oh.WK_NBR) IN (SELECT LOCN_NBR,START_WK FROM VT_STORES)
THEN oh.TTL_UN_QT
ELSE NULL
END) AS BEGINNING_OH
Есть ли способ сделать несколько столбцов в операторах в сазе, или я застрял положить их в соединении/где в подзапросе, как это в настоящее время?
Edit: Полный запрос по запросу:
SELECT
oh.LOCN_NBR AS LOCN_NBR
,item.ITEM_ID AS ITEM_ID
,SUM(CASE
WHEN oh.WK_NBR = (SELECT WK_NBR FROM ALEX_ARP_VIEWS_PRD.REF_CUSTOM_TIME WHERE cust_time_id=2)
THEN oh.TTL_UN_QT
ELSE NULL
END) AS SALEABLE_QTY
,SUM(CASE
WHEN oh.WK_NBR = (SELECT LY_WK_NBR FROM ALEX_ARP_VIEWS_PRD.REF_CUSTOM_TIME WHERE cust_time_id=2)
THEN oh.TTL_UN_QT
ELSE NULL
END) AS SALEABLE_QTY_LY
,SUM(CASE
WHEN (oh.LOCN_NBR,oh.WK_NBR) IN (SELECT LOCN_NBR,PRI_START_WK FROM VT_STORES)
THEN oh.TTL_UN_QT
ELSE NULL
END) AS BEGINNING_OH_LY
,SUM(CASE
WHEN (oh.LOCN_NBR,oh.WK_NBR) IN (SELECT LOCN_NBR,START_WK FROM VT_STORES)
THEN oh.TTL_UN_QT
ELSE NULL
END) AS BEGINNING_OH
FROM
ALEX_ARP_VIEWS_PRD.FACT_WKLY_OPR_INS oh
INNER JOIN VT_STORES stores ON oh.LOCN_NBR = stores.LOCN_NBR
INNER JOIN VT_ITEM item ON oh.VEND_PACK_ID = item.VEND_PACK_ID
WHERE
INS_TYP_CD='H'
AND TTL_UN_QT <> 0
AND WK_NBR >= (SELECT MIN(PRI_START_WK) FROM VT_STORES)
GROUP BY
oh.LOCN_NBR
,item.ITEM_ID
В чем ключ 'VT_STORES'? – dnoeth
locn_nbr является ключом VT_STORES –
Нужно ли логике запроса читать все строки 42B, или вы ожидаете, что какое-то из условий, где будет ограничивать число значимо? Если да, то из плана вы видите, что это ограничение работает? Как любопытство, это большая таблица, состоящая только из 5-6 полей, которые мы видим или у нее много дополнительных столбцов? И вам нужно сделать всю логику в одном запросе, или вы можете использовать некоторые шаги во временных/летучих таблицах? – Insac