【问题标题】:IIF Function in Access SQLAccess SQL 中的 IIF 函数
【发布时间】:2018-07-24 14:17:19
【问题描述】:

我正在尝试编写 IIF 语句以返回我的查询中的某些职位。

但是,当我去运行我的代码时,这个列甚至没有在我创建的表中返回。我在网上看了,似乎这是正确的语法。我是否遗漏了导致它不返回此列的内容?

IIF ([w.Job_Title] = "Sales Pro" OR [w.Job_Title] = "Services Pro" OR [w.Job_Title] = "Universal Pro" OR [w.Job_Title] = "Fulfillment Pro", "JobTitle", NULL),

我原来在查询的末尾有一个 WHERE 语句,但这似乎导致我的其他数据不准确,所以我认为这种 IIF 方式会更好。

以下是完整查询:

SELECT cal.FiscalYear,
       cal.FiscalQuarter,
       cal.FiscalMonth,
       cal.FiscalWeekNumber,
       Format(w.Day, "Dddd") AS DayOfWeek,
       cal.Day AS CalendarDay,
       w.Day,
       c.SegStart,
       c.SPLITNAME AS SkillName,
       w.Site,
       w.Campaign,
       w.Manager,
       w.Supervisor,
       IIF ([w.Job_Title] = "Sales Pro"
            OR [w.Job_Title] = "Services Pro"
            OR [w.Job_Title] = "Universal Pro"
            OR [w.Job_Title] = "Fulfillment Pro", "JobTitle", NULL),
       w.EmployeeNumber AS SalesID,
       w.ACDID,
       c.CallID,
       w.Employee,
       c.Caller_Name AS cms_EmployeeName,
       c.Answerer_Name AS cms_ProEmployeeName,
       c.Answered,
       c.AcwTime,
       c.Agt_Released AS AgentReleased,
       c.AnsHoldTime,
       c.AnsLogin,
       c.Calling_Pty AS CallingParty,
       c.Conference,
       c.ConsultTime,
       c.Dialed_Num AS DialedNumber,
       c.DispIVector,
       c.DispSplit,
       c.DispVDN,
       c.Duration,
       c.Disposition,
       c.Held,
       c.HoldABN AS AbanOnHold,
       c.OrigLogin,
       c.QueueTime,
       c.RingTime,
       c.TalkTime,
       c.Transferred,
       c.VDN2,
       c.VDN3,
       c.VDN4,
       c.VDN5
FROM (t_wfm AS w
      INNER JOIN t_cms AS c ON (c.CALLING_PTY = w.ACDID)
        AND (Format(c.SEGSTART, "Short date") = Format(w.[Day], "Short date")))
INNER JOIN tbl_Calendar AS cal ON cal.Day = w.Day;

【问题讨论】:

  • 您能否提供一小部分数据样本和预期结果?
  • 我希望职位仅返回上述职位。在数据样本中,该列根本没有返回。
  • How to ask a good SQL question。样本数据和预期结果比文字描述有用得多。 -- 也请发布完整的查询。
  • 查看上面的完整查询
  • 查询只是一个从两个表中检索数据的查询,我唯一想做的就是过滤到仅检索某些职位

标签: sql ms-access iif


【解决方案1】:

您尚未提供列别名。

该列很可能在那里,但标题类似于Expr1 或其他内容。

我认为您想要的是检索实际标题,而不是常量"JobTitle"

   IIF ([w.Job_Title] = "Sales Pro"
        OR [w.Job_Title] = "Services Pro"
        OR [w.Job_Title] = "Universal Pro"
        OR [w.Job_Title] = "Fulfillment Pro", [w.Job_Title], NULL) AS JobTitle,

编辑

如果您只想返回包含这些标题的,则检查将进入 WHERE 子句。则不需要IIf()

WHERE ([w.Job_Title] = "Sales Pro"
        OR [w.Job_Title] = "Services Pro"
        OR [w.Job_Title] = "Universal Pro"
        OR [w.Job_Title] = "Fulfillment Pro")

【讨论】:

  • 好的,它只返回了我想要的职位。我猜 Null 然后将过去的其他职位描述留空。我如何让它只返回那些职位而不返回其他任何职位,甚至不返回其他职位曾经存在的空白?我会使用'False'而不是Null吗?这是我使用 MS Access 的第一个月,所以我正在努力掌握它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-25
相关资源
最近更新 更多