Это может быть проще объяснить с кодом первого, так что я в настоящее время использовать что-то, что выглядит следующим образом:Многочисленные коррелированные запросы не поддерживаются в Netezza?
'A' in
(
SELECT DISTINCT b.col1
FROM table b
WHERE b.ky1 = a.ky1
AND b.ky2 = a.ky2
AND b.group = a.group
AND b.rowNum < a.rowNum
)
в ИНЕКЕ. По сути, я пытаюсь увидеть, является ли значение A в любой точке до строки, заданной внешним запросом. Это работает само по себе. Вопрос в том, когда я добавить следующее к запросу:
OR
'S' in
(
SELECT DISTINCT b.col1
FROM tableb b
WHERE b.ky1 = a.ky1
AND b.ky2 = a.ky2
AND b.group = a.group
AND b.rowNum < a.rowNum
)
Теперь Netezza производит следующее сообщение об ошибке:
ERROR: (2) This form of correlated query is not supported - consider rewriting
У меня есть ощущение, что единственный способ обойти это будет делать какие-то соединения, но я не совсем уверен, как это сделать, не производя много дубликатов. Какие-либо предложения?
UNION вместо того, чтобы присоединиться? (Не будет никаких дубликатов.) – jarlh
@jarlh: Это предотвратило бы точные дубликаты, но не частичные совпадения (где конкретная запись имеет '' A'' и '' S'' для 'b.col1' в моем случае). – charles
Возможно, будет лучший способ написать этот запрос. Попробуйте задать другой вопрос с образцами данных и желаемыми результатами - описывая, что вы действительно хотите сделать. Если ваш запрос действительно сложный, попробуйте упростить его, чтобы сосредоточиться на этом аспекте. –