【问题标题】:Procedural conditioning on TeradataTeradata 的程序调节
【发布时间】:2018-05-28 08:01:35
【问题描述】:

我对 SQL 一点也不陌生,但我使用的是 Teradata。 您如何使用维度表创建一个条件来截断一个表,具体取决于它是什么

以下是我在 SQL Server 上为给您提供一个想法的方法:

DECLARE @day_name varchar(20)= (SELECT day_name FROM dim_date WHERE 
date = CAST( GETDATE() as date) )

BEGIN
IF @day_name = 'Friday' PRINT('Today is Friday')
ELSE PRINT('Today is not Friday')
END

非常感谢您的帮助,

雨果

【问题讨论】:

  • 首先,SQL Server 有DATENAME(weekday, GETDATE()),我相信在 Teradata 中应该是CURRENT_DATE(FORMAT 'eeee') 然后你只需要IF (X) THEN blah; ELSE blah; END IF;
  • 嘿,我对你刚才的建议有一些问题:1/ CURRENT_DATE(FORMAT 'eeee') 没有给出 day_name 2/ 逻辑 IF (X) THEN blah;否则废话;万一;似乎不起作用 3/ 你如何管理变量?谢谢!
  • does not seem to work 是您可以在 SO 这样的论坛上发表的最后有用的声明之一。尝试阅读stackoverflow.com/help/mcve,可能还有info.teradata.com/HTMLPubs/DB_TTU_16_00/index.html#page/…
  • 哇,这是不必要的居高临下的 - 我只是试图将文字保持在最低限度,以限制字符。无论如何感谢您的帮助
  • Teradata 提供 TD_DAY_OF_WEEK({date expression}) 返回 1 到 7,其中 1 是星期日。它比使用 SYS_CALENDAR 视图完成同样的任务更有效。

标签: sql conditional-statements teradata


【解决方案1】:

只需将条件用作 SQL 中的 where 条件

DELETE yourTable 
WHERE 'Friday' = (SELECT day_name FROM dim_date WHERE "date" = current_date )

【讨论】:

  • 就是这样!我想有时你只需要找到一种完全不同的方式。谢谢好心的先生。
  • 不客气。随意将其标记为正确答案。
猜你喜欢
  • 2016-06-23
  • 2015-07-29
  • 2014-08-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-03
  • 2017-11-14
  • 2011-03-08
  • 1970-01-01
相关资源
最近更新 更多