【问题标题】:MS Access SUMIIF to SQL CASE statementMS Access SUMIIF to SQL CASE 语句
【发布时间】:2015-02-09 11:47:02
【问题描述】:

我正在尝试将 MS Access 查询转换为 SQL,我正在努力寻找正确的方法。

MS Access 行是:Records Loaded: Sum(IIf([cmp_CampaignTable].>[ContactID]>0,1,0))

我目前的SQL代码是:

SELECT        Project.ProjectName, 
                cmp_UKWarranty.ProjectID, 
                SUM(CONVERT(numeric,(CASE WHEN (cmp_UKWarranty.ContactID) >0,1,0) AS RecordsLoaded
FROM            cmp_UKWarranty INNER JOIN
                         Project ON cmp_UKWarranty.ProjectID = Project.ProjectID INNER JOIN
                         Dial ON cmp_UKWarranty.DialID = Dial.DialID CROSS JOIN
                         CRC 

我没有其他人要问,有没有人能在这里指出我正确的方向?

亚当

【问题讨论】:

标签: sql sql-server-2008 ms-access case


【解决方案1】:

语法错误时的情况:

SELECT Project.ProjectName,
       cmp_UKWarranty.ProjectID,
       Sum(CASE
             WHEN ( cmp_UKWarranty.ContactID > 0 ) THEN 1
             ELSE 0
           END)
FROM   cmp_UKWarranty
       INNER JOIN Project
               ON cmp_UKWarranty.ProjectID = Project.ProjectID
       INNER JOIN Dial
               ON cmp_UKWarranty.DialID = Dial.DialID
       CROSS JOIN CRC 

【讨论】:

    【解决方案2】:

    你快到了。您需要thenelse。此外,无需转换为“数字”:

    SELECT p.ProjectName, w.ProjectID,
           SUM(CASE WHEN w.ContactID > 0 THEN 1 ELSE 0) AS RecordsLoaded
    FROM cmp_UKWarranty w INNER JOIN
         Project p
         ON w.ProjectID = p.ProjectID INNER JOIN
         Dial d
         ON w.DialID = Dial.d CROSS JOIN
         CRC
    

    【讨论】:

      猜你喜欢
      • 2020-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-05
      • 1970-01-01
      • 1970-01-01
      • 2011-03-04
      • 1970-01-01
      相关资源
      最近更新 更多