#sql #group-by #nested #sybase
#sql #группировать по #вложенный #sybase
Вопрос:
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 и вчера
сообщения об ошибках
[Неправильный синтаксис рядом с ‘,’] [Неправильный синтаксис рядом с ключевым словом ‘group’]
Ответ №1:
После правильного форматирования запроса легко увидеть проблему. В вашем первом вложенном выборе вы написали:
and card_num in (select card_num,
sum(trans_amount)
from e_transaction
...)
Ожидается in
, что будет один столбец, но ваш вложенный выбор выдает два. Все, что вам нужно сделать, это удалить sum(trans_amount)
из вложенного выбора следующим образом:
and card_num in (select card_num
from e_transaction
...)
Комментарии:
1. Спасибо, Гилад. Теперь он работает нормально
2. @brucewayne — Отлично, рад слышать