Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 获取第一笔交易为成功卡付款的所有ID_Sql_Database_Min - Fatal编程技术网

Sql 获取第一笔交易为成功卡付款的所有ID

Sql 获取第一笔交易为成功卡付款的所有ID,sql,database,min,Sql,Database,Min,我正在尝试获取第一笔交易是成功的信用卡支付的所有用户ID 然而,我得到的结果是可疑的——我不一定要拿到第一笔交易,那就是信用卡支付。对于某些用户来说,这确实是正确的。然而,对于其他人,我目前正在获取另一个事务 如果您能提供任何可能出错的指导,我们将不胜感激 SELECT t."USER_ID", (t."AMOUNT") AS amount FROM transactions t INNER JOIN (SELECT MI

我正在尝试获取第一笔交易是成功的信用卡支付的所有用户ID

然而,我得到的结果是可疑的——我不一定要拿到第一笔交易,那就是信用卡支付。对于某些用户来说,这确实是正确的。然而,对于其他人,我目前正在获取另一个事务

如果您能提供任何可能出错的指导,我们将不胜感激

SELECT
    t."USER_ID",
    (t."AMOUNT") AS amount
FROM
    transactions t
INNER JOIN 
    (SELECT MIN( tt."CREATED_DATE" ) AS date, tt."USER_ID"
     FROM transactions tt
     WHERE      
        tt."STATE" = 'COMPLETED'
        AND tt."TYPE" = 'CARD_PAYMENT'
     GROUP BY tt."USER_ID") tt ON t."USER_ID" = tt."USER_ID"
ORDER BY
    amount DESC

一种方法使用聚合,将用户的最早日期与成功信用卡交易的最早日期进行比较:

select user_id
from transactions t
group by user_id
having min(created_date) = 
       min(case when state = 'COMPLETED' and type = 'CARD_PAYMENT' then created_date end);
另一种方法(如果需要整行)是
不存在

select t.*
from transactions t
where t.state = 'COMPLETED' and
      t.type = 'CARD_PAYMENT' and
      t.created_date = (select min(t2.created_date)
                        from transactions t t2
                        where t2.user_id = t.user_id 
                       );
或者,使用窗口功能:

select t.*
from (select t.*,
             row_number() over (partition by user_id order by created_date) as seqnum
      from t
     ) t
where seqnum = 1 and
      t.state = 'COMPLETED' and
      t.type = 'CARD_PAYMENT' ;
      

请提供示例数据、所需结果和适当的数据库标签。谢谢。我认为这是一条正确的道路。然而,我试图再次检查并添加一个金额的总和。我认为这是返回所有成功的信用卡交易的总和。有没有办法只返回第一笔交易?@tacd。我修复了中间的查询并添加了第三个查询。第二个和第三个都应该做你想做的。太好了。很多TK!