在一个条件的基础上尝试从另一个字段中选择数据,然后在第二个值的基础上提取数据

时间:2014-12-15 05:25:27

标签: sql oracle

我有一张表格,其中包含日期,交易ID,金额。 “事务ID”是数字和字母数字。首先,我需要检查“事务ID”以特定字母开头的第一种情况,然后我需要为特定的“事务ID”提取“日期”。然后根据特定的“日期”我需要提取交易数据。请帮我解决这个问题。

2 个答案:

答案 0 :(得分:1)

您可以使用EXISTS子句检查子查询中的日期。

这将返回在具有以字母N

开头的transaction_id的日期上发生的所有事务
SELECT * 
FROM some_table st
WHERE EXISTS
(   SELECT 1 
    FROM some_table st1
    WHERE st1.date = st.date
      AND st1.transaction_id LIKE 'N%'
)

FIDDLE DEMO

这些也可以在transaction_id上使用索引,这可以加快速度

答案 1 :(得分:0)

您可以找到transactionId的日期,该日期以;让我们说'A':

SELECT date FROM your_table WHERE transactionId LIKE 'A%';

现在您在使用'LIKE'搜索时可能有多条记录,然后根据日期可以从表中获取数据:

SELECT * FROM your_table WHERE date = '2014-12-25 10:40:00';

但如果您准确了解您的transactionId,那么以下查询就足够了。

SELECT * FROM your_table WHERE transactionId = 'A1001';