2016-10-04 7 views
1

新しいカードで初めて取引を返そうとしています。無駄に。私は指定された日付に初めてトランザクションを実行したカード番号を返すクエリを作成しようとしています。これは私の質問ですが、それ以前の日付に以前に取引を行ったカード番号が私に与えられます。Sybase SQL返品初めての取引

SELECT TOP 1 trans_date, card_num 
FROM e_transaction 
where trans_date between '20161004 00:00' and '20161004 23:59' 
+1

サンプルデータと予想される結果を追加できますか? 'Order By 'のない' Top'は意味がありません –

+1

TOP 1ですが、ORDER BYはありませんか? – jarlh

+0

あなたの質問を更新し、サンプルデータと希望する出力を表示してください。 –

答えて

1

早い取引日と仮定するとカードの最初の取引日と一致し、次のGROUP BYクエリ試すことができます。

SELECT MIN(trans_date), card_num 
FROM e_transaction 
GROUP BY card_num 
HAVING MIN(trans_date) BETWEEN '20161004 00:00' AND '20161004 23:59' 

TRANS_DATEを.... Card_Num .... Trans_Amount。

10/2/2016 ..... 21345 ............... 500;

10/2/2016 ..... 21345 ................ 600;

10/4/2016 ..... 21114 ............... 300;

10/4/2016 ..... 21734 ............... 600;

2016年9月4日...... 21734 ................ 400

これは表だったと仮定すると、私のクエリは返す必要がありますcard_num =」 21114 'およびTrans_Amount =' 300 'は、このカード番号に以前のトランザクション履歴が存在しないことを示す。他のカード番号は、以前の取引履歴または以前の日付に発生したため返されません。

関連する問題