用于从表中提取目标数据的SQL

时间:2014-11-05 19:26:47

标签: sql-server

朋友。

快速提问。

我有一个日志表,我需要从中提取具体信息。

有很多列,包括日期/时间戳和一些交易代码。

记录适用于多个帐号。

我想提出以下内容:

  • 从记录中提取一些字段(对于每个帐号),事务代码为100.此代码可以有多条记录。
  • 在100个代码记录之后,使用转码101查找第一个事务并包含此记录的时间戳。

任何帮助,一如既往,将不胜感激!

感谢。

1 个答案:

答案 0 :(得分: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)

  3. 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