我有如下所示的sql。主頁提示:將varchar值'ADMIN'轉換爲數據類型int時出現轉換失敗int
的結果K表(來自WITH)給出指定範圍(例如1-90)的數字代碼。
的主要選擇部分正常工作,直到我用
sum(F._IsInIntersection) [CountIntersection]
它會導致錯誤
消息245,級別16,狀態1,11號線
轉換爲varchar時 轉換失敗值'ADMIN'爲數據類型int。
如果我評論這一行,那就OK了。
我不知道,爲什麼這個錯誤發生在SUM()
只包含int值的行。沒有ADMIN
值(如錯誤中提到的)存在於任何地方...
任何人都可以看到查詢的任何問題?
;with K as (
select cast(c.Code as int) code
from rmCategory c, rmCategoryGroup cg, rmIdentification ic
where 1=1
and c.CategoryGroupID=cg.ID
and c.ID=ic.ID0
)
select
F.STAV_AKT [Code]
, count(F.STAV_AKT) [Count]
, sum(F._IsInIntersection) [CountIntersection]
from
(
select
f.*
, case when f.KVALIF IN (select code from K) and f.KVALIF is not null then 1 else 0 end _IsInIntersection
from frmFormData_208629_MaMo2_IMPORT f, rmIdentification i
where 1=1
and f.ID=i.id0
and i.isValid=1
and f.sysDAVKA=5
) F
group by F.STAV_AKT
order by F.STAV_AKT
我也嘗試過鑄造的sum(cast(F._IsInIntersection as int)) [CountIntersection]
內部參數,以確保使用的,而不是布爾類型的國際價值,但沒有任何變化。
聲明的CTE - 「K」是不是在隨後的'SELECT'語句中使用 – Raj
是的,它在CASE表達式中子選擇F是:'給K選擇代碼' – NickyvV
謝謝。錯過了。 – Raj