【问题标题】:Improving a SQL teradata query改进 SQL teradata 查询
【发布时间】:2021-09-02 16:32:23
【问题描述】:

我有一个如下所示的表格,我希望在结果集中的 Ref 345 和 789 前面基于 count(Ref) = 1 的“Y”,其中数量小于 0。我正在使用此查询得到想要的输出。我的问题是,在 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

【问题讨论】:

    标签: sql teradata teradata-sql-assistant teradatasql


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-25
      • 2018-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多