2015-02-09 61 views
1

我試圖將MS Access查詢轉換爲SQL,我很努力地找到正確的方法。MS Access SUMIIF到SQL CASE語句

的MS訪問行是:記錄加載:薩姆(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 

我沒有其他人問,有人能夠指出我在正確的方向嗎?

亞當

+0

你是正確的軌道上的剛需synatx檢查[在這裏你可以得到更多的有關情況。在SQL Server](https://msdn.microsoft.com/en-us/library/ms181765.aspx)[和這個問題](http://stackoverflow.com/questions/17811673/sql-query-sumcase-when -x-then-1-else-0-for-multiple-columns) – 2015-02-09 11:50:06

回答

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 
+0

謝謝你這個工作完美 – Welldonebacon 2015-02-09 12:35:43

1

你幾乎在那裏。您需要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