【问题标题】:IF function use within SQL help needed (New to SQL)需要在 SQL 帮助中使用 IF 函数(SQL 新手)
【发布时间】:2021-09-19 18:39:48
【问题描述】:

抱歉,如果我的问题不清楚,我是新手!

我的数据可以追溯到 3 年前,如果 InsertDateTime 列中的日期(由日期和时间组成)在最近 364 之内,我希望 364DaysFlag 列返回 1如果 InsertDateTime 超过 364 天,则返回 0。

为了清楚起见,Transaction.tbl.Flag 表是动态/实时的,因此每天都会添加最近的一天,这是我为了让它工作而解开的地方!

以下是我使用的错误代码(运行但不执行我想要的操作),我将其加粗的地方是需要更新的地方。

SELECT TransactionDate, TotalCustomers, [1 as 364DaysFlag], InsertDateTime
INTO Transaction.tbl.Flag
FROM Performance.Sales.Total

请有人建议我如何让它工作?我是否需要使用 IF 函数或其他东西?我需要 DATEADD 和/或 GETDATE 函数吗?我对 SQL 还很陌生,还在学习! :)

【问题讨论】:

  • 请提供样本数据和期望的结果。您的示例代码没有意义。 MySQL 中没有INTO 语句(有一个INTO 子句,但这不是查询的开始方式)。
  • SELECT TransactionDate, TotalCustomers, InsertDateTime > CURRENT_DATE - INTERVAL 364 DAY AS 364DaysFlag, InsertDateTime ...。当然,不是 SELECT INTO - 通过常用方式检索 364DaysFlag 列值。
  • @Akina 如何获取它,如果日期在 364 天内,L364D 列返回 1,如果超过 364 天,则返回 0?
  • 按原样使用我的 SQL 文本片段。

标签: mysql sql if-statement dateadd getdate


【解决方案1】:
SELECT TransactionDate
    , TotalCustomers
    , CASE WHEN /*DateColumn*/ > (GETDATE()-365) THEN 1 ELSE 0 END AS /*ColumnAlias*/
    , InsertDateTime
INTO database.schema.table
FROM Performance.Sales.Total

仅供参考,尽量不要以数字开头。此外,由于它是一个标志,请尝试将其转换为几个单词问题,例如“RecentSale”或类似于其中 1 = 是表示最近的销售而 0 表示不是最近的问题。

【讨论】:

    猜你喜欢
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    相关资源
    最近更新 更多