2016-10-17 2 views
0
SELECT card_num, 
     COUNT(merchant_code) 
from e_transaction 
where trans_date between '20161017 00:00' and '20161017 23:59' 
and channelid='02' 
and trans_code='P' 
and card_num in (select card_num, 
         sum(trans_amount) 
       from e_transaction 
       where trans_date between '20161017 00:00' and '20161017 23:59' 
       and channelid='02' 
       and trans_code='T' 
       and card_num not in (select card_num 
             from e_transaction 
             where trans_date between '20160724 00:00' and '20161016 23:59') 
       group by card_num 
       having sum(trans_amount) > 100000) 
group by card_num 
having count (merchant_code) > 1 

Я продолжаю получать синтаксическую ошибку для этого запроса, но не могу найти, где находится ошибка. Я пытаюсь намотать несколько card_num с таким же merchant_code сегодня с trans_amount более чем 100000 и не нашли между 20160724 и вчеравыбор конкретных карт с двойным вложенным sql-запросом sybase

сообщения об ошибках

[Неправильный синтаксис около «»] [Неправильный синтаксис около ключевого слова 'group']

ответ

0

После правильного форматирования запроса легко увидеть проблему. В вашем первом вложенном выбрать Вы писали:

and card_num in (select card_num, 
         sum(trans_amount) 
       from e_transaction 
       ...) 

The in ожидает один столбца, но ваш вложенный выбор дает два. Все, что вам нужно сделать, это удалить sum(trans_amount) из вложенного выбора следующим образом:

and card_num in (select card_num 
       from e_transaction 
       ...) 
+0

Спасибо, Гилад. Теперь он отлично работает – brucewayne

+0

@brucewayne - Отлично, приятно слышать –

Смежные вопросы