【问题标题】:Recreating Access report in SQL在 SQL 中重新创建访问报告
【发布时间】:2015-10-12 13:01:05
【问题描述】:
IIf(IsNull([dbo_TASK]![restart_date]),[dbo_TASK]![target_start_date],[dbo_TASK]![restart_date]),[dbo_TASK]![act_start_date]) AS [Estimated Start Date]

IIf(IsNull([dbo_TASK]![act_end_date]),IIf(IsNull([dbo_TASK]![reend_date]),[dbo_TASK]![target_end_date],[dbo_TASK]![reend_date]),[dbo_TASK]![act_end_date]) AS [Estimated Finish Date]

我在 MS Access 中有以上 2 个字段并尝试重新创建它是 SQL。

我尝试使用 Case 语句,但没有得到正确的结果.. 请帮忙

【问题讨论】:

  • iif(isnull(x), y, x) 等价于coalesce(x, y)
  • coalesce(dbo.TASK.act_start_date, (coalesce(dbo.TASK.restart_date,dbo.TASK.target_start_date)) AS 测试不工作

标签: sql sql-server database ms-access


【解决方案1】:

COALESCE 按顺序查看每个字段,它将返回第一个不评估为 NULL 的值。您可以根据需要列出任意数量的字段以返回非空值。

第一个字段是:

COALESCE([dbo_Task].[restart_date],[dbo].[target_start_date])

第二个是:

COALESCE([dbo_TASK].[act_end_date],[dbo_TASK].[reend_date],[dbo_TASK].[target_end_date])

【讨论】:

  • 检查表名和字段名,确保所有内容拼写正确。
猜你喜欢
  • 1970-01-01
  • 2016-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多