2014-11-05 67 views
0

朋友。用於從表中拉取目標數據的SQL語句

有一個簡單的問題。

我有一個日誌表,我需要從中提取特定的信息。

有很多列,包括日期/時間戳和一些事務代碼。

記錄用於多個帳號。

我想拉以下幾點:

  • 從紀錄的100交易代碼拉幾個字段(每個帳號)可以有多個記錄與此代碼。
  • 查找帶有轉碼101的第一個事務後,該代碼記錄爲100,幷包含此記錄的時間戳記。

任何幫助,一如既往,將不勝感激!

謝謝。

+0

請分享表結構,列名,也對於Q#2,你所說的 '後' 的意思。這是否意味着下一個時間戳? – SouravA 2014-11-05 19:46:23

+0

你是什麼意思的'一些交易代碼'?它們是行或列(平面表)的一部分嗎?可能有多行具有相同的事務代碼?如果不是,那麼任何具有transaction_code的行自動成爲下一個記錄。還有你的意思是'那100個代碼記錄'?如果有多個記錄的事務代碼是100,那麼哪個記錄是有問題的記錄? – SouravA 2014-11-05 19:50:04

回答

0

你的問題非常含糊。請編輯並添加額外的信息。隨着不管我瞭解,到目前爲止,這是我能想出:

  1. SELECT AccountNumber, COL1, COL2, COL3 FROM YOURTABLE WHERE TRANSACTION_CODE = 100--NO AGGREGATION

  2. 我假設的「後」你的意思是下一個時間戳。在這種情況下..

    SELECT COL1, COL2 FROM YOURTABLE WHERE DATETIME_TSTAMP=( SELECT MIN(DATETIME_TSTAMP) FROM YOURTABLE WHERE DATETIME_TSTAMP > ( SELECT DATETIME_TSTAMP FROM YOURTABLE WHERE TRANSACTION_CODE = 100) AND TRANSACTION_CODE = 101)

OR

SELECT COL1, COL2, DATETIMESTAMP FROM (
SELECT COL1, COL2, DATETIMESTAMP, ROW_NUMBER() OVER (ORDER BY TIMESTAMP) ROWNUM FROM YOURTABLE WHERE TRANSACTION_CODE = 101 AND DATETIMESTAMP > 
(SELECT DATETIMESTAMP FROM YOURTABLE WHERE TRANSACTION_CODE = 100))A 
WHERE ROWNUM = 1 
+0

好的..更清晰些: 表格有以下幾列。 AccountNumber(num10),Transcode(num3),DateStamp(DateTime) 對於每個100個賬戶實例,幾乎總是有多個trans 101。 我想要得到每個記錄的賬號結果,代碼爲100,以及該(100)記錄的日期戳記,以及該賬戶在100筆交易後發生的第101筆交易的日期戳記。 – user1771591 2014-11-05 22:31:39