2010-02-02 62 views
0

這是我正在做的簡化版本,但我無法獲得任何工作。該聲明在'ERR'後給我一個沒有逗號的錯誤。我希望列是'月',而我堅持這會工作,但我有很多麻煩。謝謝你的幫助!多重事件的案例陳述...不工作!

 
    select 
a.POL_PRI_RSK_ST_CD, a.MASTER_COMPANY_NBR, 

case 

when a.char046 is NULL then 'ERR' 

when a.char046 > '010' then '11+' 

else a.char046 end as Policy_Years, 

a.Last7Days, a.Last30Days, a.Last90Days 

from reporting a inner join 

Repository b 

on a.RECORD_ID = b.RECORD_ID 

where a.POL_OGN_EFF_DT >= '2008-11-01' 

group by 

a.POL_PRI_RSK_ST_CD, a.MASTER_COMPANY_NBR, 

case 

when a.char046 is NULL then 'ERR' 

when a.char046 > '010' then '11+' 

else a.char046 end as Policy_Years, 

a.Last7Days, a.Last30Days, a.Last90Days
+0

刪除逗號後會得到哪個錯誤? – Heinzi 2010-02-02 14:59:14

+1

END AS MONTH給我:','附近語法不正確。 刪除逗號後,我得到:多部分標識符「day」無法綁定。 – Daniel 2010-02-02 15:01:43

+1

@Daniel:這個錯誤與您的CASE聲明無關 - 您的「day」條款有問題。向我們展示完整的SQL語句,我們可以解決這個問題。 – Heinzi 2010-02-02 15:03:22

回答

2

注意:這是問題註釋中調試會話的結果。

誤差Incorrect syntax near the keyword 'as'.通過as Policy_YearsGROUP BY子句中引起的。 GROUP BY條款中不允許使用as

2

嘗試使用不帶逗號的示例...以下示例。

select 
    case 
     when a.month is NULL then 'ERR' 
     when a.month > '011' then '12' 
     else a.month 
    end as Month, 
    a.Last7Days 
from ... 
+0

如果沒有逗號,則會立即爲每一天,每年等發送此消息。 消息4104,級別16,狀態1,行1 無法綁定多部分標識符「day」。 – Daniel 2010-02-02 14:59:44

+0

逗號仍然需要分隔返回的記錄集的列。在案件陳述中你不需要他們。 – Mayo 2010-02-02 15:01:17

+0

對,我的意思是在'ERR'之後沒有那個逗號。同樣的錯誤 – Daniel 2010-02-02 15:02:46

0
select 
    day, year, 
case 
    when a.month is NULL then 'ERR' 
    when a.month > '011' then '12' 
    else a.month end as Month, 
a.Last7Days 
+0

仍然出現錯誤。往上看。 – Daniel 2010-02-02 15:03:17

0

我認爲你缺少 'AS' 的情況下結束後。

+0

可選,不需要... – 2010-02-02 15:16:00

0

修復逗號:

select 
    day, year, 
    case 
     when a.month is NULL then 'ERR' 
     when a.month > '011' then '12' 
     else a.month 
    end Month, 
    a.Last7Days 
from [table] 
0

放在方括號DayYear,像這樣:

select a.[Day], a.[Year], ... 
+0

這只是一個例子,一天不在實際陳述 – Daniel 2010-02-02 15:04:12

+0

請發表實際陳述。 – RedFilter 2010-02-02 15:05:28

0

解決對「多部分組成的標識符 '一天,你的新的錯誤味精',

表中的dayyear列? 查詢中的From後面是什麼?你在一起加入多個表嗎?請顯示整個查詢?

確定的基礎上,年編輯的問題,(你不能用在GROUP BY別名)試試這個:

select a.POL_PRI_RSK_ST_CD, 
    a.MASTER_COMPANY_NBR, 
    case when a.char046 is NULL then 'ERR' 
     when a.char046 > '010' then '11+' 
     else a.char046 end as Policy_Years, 
    a.Last7Days, a.Last30Days, a.Last90Days 
from reporting a 
    join Repository b 
     on a.RECORD_ID = b.RECORD_ID 
where a.POL_OGN_EFF_DT >= '2008-11-01' 
group by a.POL_PRI_RSK_ST_CD, 
    a.MASTER_COMPANY_NBR, 
    case when a.char046 is NULL then 'ERR' 
     when a.char046 > '010' then '11+' 
     else a.char046 end, 
    a.Last7Days, a.Last30Days, a.Last90Days 

,但實際上,你在那裏有沒有聚合函數的所有,只是一個通過在選擇每一個表情,組,使所有你需要的是一個獨特的關鍵字,你不要;噸通過在所有需要的組:

select Distinct a.POL_PRI_RSK_ST_CD, 
    a.MASTER_COMPANY_NBR, 
    case when a.char046 is NULL then 'ERR' 
     when a.char046 > '010' then '11+' 
     else a.char046 end as Policy_Years, 
    a.Last7Days, a.Last30Days, a.Last90Days 
from reporting a 
    join Repository b 
     on a.RECORD_ID = b.RECORD_ID 
where a.POL_OGN_EFF_DT >= '2008-11-01' 
+0

選擇 \t a.POL_PRI_RSK_ST_CD爲國家,爲a.MASTER_COMPANY_NBR Original_CO, 情況 \t當a.char046爲NULL,則 'ERR' \t當a.char046> '010',那麼'11 +」 \t別的一個。 char046端作爲Policy_Years, \t a.Last7Days,a.Last30Days,從報告一個內a.Last90Days 上a.RECORD_ID = b.RECORD_ID 加入 庫b 其中a.POL_OGN_EFF_DT> = '2008-11-01' group by \t a.POL_PRI_RSK_ST_CD,a.MASTER_COMPANY_NBR, \t case \t當a.char046爲NULL時,則'ERR' \t當a。'010'then '11 +' \t else a.char046 end as Policy_Years, \t a.Last7Days,a.Last30Days,a.Last90Days – Daniel 2010-02-02 15:23:58

+0

我編輯了這個問題。謝謝 – Daniel 2010-02-02 15:26:30

0

你不能在GROUP BY使用AS別名。該表達式應該與SELECT中沒有別名的表達式匹配。