繁体   English   中英

改进 SQL teradata 查询

[英]Improving a SQL teradata query

我有一个如下表,我希望结果集中的 Ref 345 和 789 前面的“Y”基于计数(Ref)= 1,其中数量小于 0。我正在使用此查询来获取所需的output。我的问题是,在 Teradata 中是否还有其他(更有效的)方法可以做到这一点?

在此处输入图像描述

SELECT T.Ref,T.AMOUNT, R.Refund_IND as Refund_IND    
FROM Table1 t    
LEFT JOIN (select 'Y' as Refund_IND, Ref from Table1 where Ref in    
(select Ref from Table1 where amount < 0)     
group by Ref having count(Ref) = 1) R on t.Ref = R.Ref

您可以使用 window 函数来测试这些条件:

 SELECT
     Ref,
     Amount,
     CASE WHEN COUNT(*) OVER (PARTITION BY REF) = 1 AND Amount < 0 THEN 'Y' ELSE '' END AS Refund_Ind 
  FROM Table1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM