Faran Saleem Ответов: 1

Подзапрос вернул более одного значения


Я использую подзапрос с внутренним соединением, и он возвращает 10 строк, но мне нужно сопоставить эти 10 строк с другой таблицей.
Как я могу это сделать?

Ниже приведен мой запрос.
SELECT 
  IT.IPTELM MOBILNO,
  TC.CDGACNTN GROUPACCOUNTNO, 
  TC.CDCUSTN CUSTOMERNO, 
  TC.PRCARDN, 
  TC.CARDNO, 
  TC.CRDIND, 
  TC.Limit 
FROM CARDS.DBO.TOTAL_CDBS11801 TC
  INNER JOIN CARDS.DBO.INPARTPF IT ON 
    (SELECT DISTINCT CDCUSTN FROM CARDS.DBO.TOTAL_CDBS11801 WHERE PRCARDN  IN 
      (SELECT PRCARDN FROM CARDS.DBO.TOTAL_CDBS11801 WHERE CARDNO IN (SELECT * FROM #T)
    ) AND CRDIND ='P')  = (IT.IPKIPN)


Любая идея

Что я уже пробовал:

Гуглил, чтобы найти решение с помощью подзапроса с использованием внутренних соединений, но не смог найти никакого решения

Maciej Los

Слишком много избранных!
Попробуйте уменьшить количество операторов SELECT, и вы сможете исправить свой запрос.

Jörgen Andersson

Да, я понимаю, что ты делаешь и почему это не работает, Питер абсолютно прав.

Объясните словами, Чего вы хотите достичь, и мы, возможно, сможем вам помочь.

1 Ответов

Рейтинг:
0

Kornfeld Eliyahu Peter

(SELECT DISTINCT CDCUSTN FROM CARDS.DBO.TOTAL_CDBS11801 WHERE PRCARDN  IN 
      (SELECT PRCARDN FROM CARDS.DBO.TOTAL_CDBS11801 WHERE CARDNO IN (SELECT * FROM #T)
    ) AND CRDIND ='P')  = (IT.IPKIPN)


То, что вы на самом деле имеете здесь, - это A = B, где A (предложение select) имеет несколько значений... Вы не можете сделать = (равно) с более чем одним значением в обе стороны...


Maciej Los

Коротко И По Существу!

Faran Saleem

Нет, сэр, вы ошибаетесь, проблема здесь не в операторе=, а в подзапросе. Подзапрос возвращает более одной строки, поэтому он выдает мне ошибку. Я также использовал оператор In, но он дает ту же ошибку