使用双嵌套sql查询sybase选择特定卡

时间:2016-10-17 21:30:27

标签: sql group-by nested 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

我不断收到此查询的语法错误,但似乎无法找到错误的位置。我试图使用相同的merchant_code为多个card_num假脱机今天trans_amount大于100000而在20160724和昨天之间找不到

错误消息

  

[语法附近','] [关键字附近的语法不正确   '组']

1 个答案:

答案 0 :(得分:0)

正确格式化查询后,很容易看到问题。在您的第一个嵌套选择中,您写道:

;i < N || f(xNext) > error;

and card_num in (select card_num, sum(trans_amount) from e_transaction ...) 期待一个列,但您的嵌套选择是两个。您需要做的就是从嵌套选择中删除in,如下所示:

sum(trans_amount)