2014-01-14 26 views
0

我想加入三個表使用和內部聯接,並有一個更改顏色的內容如果電子郵件已發送。創建INNER加入IIF

下面是我的查詢

SELECT IIF(COUNT Holdsent.job)>0, #STD, #RED) AS Colour, jobs.job, jobs.jobstatus, jobs.client, jobs.logdate 
FROM jobs INNER JOIN clients ON clients.client = jobs.client INNER JOIN holdsent ON holdsent.job = jobs.job 
WHERE (jobs.jobstatus = 'HOLD' OR jobs.jobstatus = 'CLIHOLD') 

以下是錯誤我收到

預期詞法元素找不到:(失蹤(集合函數 SELECT子句中[解析表達式(列1) ] - 在SQL語句中出現 錯誤的位置是:1 SELECT IIF(COUNT Holdsent.job)> 0,#STD,#RED)AS COLOR,jobs.job, jobs.jobstatus,jobs.client作業。 logdate FROM jobs INNER JOIN clients ON clients.client = jobs.client INNER JOIN holdsent ON holdsent.job = jobs.job WHERE(jobs.jobstatus = 'HOLD' OR jobs.jobstatus = 'CLIHOLD')

我是新來的SQL並且可以執行基本查詢,但在IIF上不明確。提前感謝您提供的任何幫助。

+1

您使用的是MySQL還是SQL Server? –

+0

@GordonLinoff從錯誤消息我會說這是MS Sql Server ... –

+0

對不起,我們使用的是SQL Server – Aaron

回答

0

對不起,我沒有嘲笑了測試表這一點,但我想你想子查詢對你holdsent表得到的計數值成主要查詢,然後在您的IIF() function中使用三個參數。我沒有做一個測試案例,但我認爲這將滿足您的需求:

SELECT  IIF((isnull(holdsentCount.jobCount,0)>0, #STD, #RED) AS Colour 
      , jobs.job 
      , jobs.jobstatus 
      , jobs.client 
      , jobs.logdate 
FROM  jobs 
JOIN  clients 
ON   clients.client = jobs.client 
LEFT JOIN (select  holdsent.job 
         , count(*) as jobCount 
      from  holdsent 
      group by holdsent.job) as holdsentCount 
ON   holdsentCount.job = jobs.job 
WHERE  (jobs.jobstatus = 'HOLD' OR jobs.jobstatus = 'CLIHOLD') 

而且,包裹holdsentCount.jobCount與ISNULL(),使其返回0,如果沒有在子查詢返回。

編輯:我不知道'#STD'或'#RED'是什麼,所以我就這樣離開了他們。

+0

感謝大家的幫助。我能弄明白。 – Aaron

3

iif是MS Access的一個特殊功能,SQL Server已經開始支持最新版本。正確的SQL表單是case聲明。您查詢的改進版,用標準的SQL是:

SELECT (case when COUNT(hs.job)>0 then #STD else #RED end) AS Colour, 
     j.job, j.jobstatus, j.client, j.logdate 
FROM jobs j INNER JOIN 
    clients c 
    ON c.client = j.client INNER JOIN 
    holdsent hs 
    ON hs.job = j.job 
WHERE j.jobstatus in ('HOLD', 'CLIHOLD') 
+1

由於OP使用'WHERE(jobs.jobstatus ='HOLD'或jobs.jobstatus ='CLIHOLD')'不應該是:'WHERE j.jobstatus IN('HOLD','CLIHOLD')' –

+0

@AndrewBickerton 。 。 。謝謝。固定。 –

+0

這兩個都不一樣嗎? –