2016-10-04 40 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'是這個卡號上沒有以前的交易記錄。其他卡號不會被退回,因爲他們有早先的交易歷史或在較早的日期發生。