2010-08-10 66 views
3

我在下面的查詢中遇到問題。的問題是:將表達式轉換爲數據類型的算術溢出錯誤int

消息8115,級別16,狀態2,行1個 算術溢出錯誤將表達式轉換爲數據類型int

問題位於該線以下的代碼。

INNER JOIN Test t ON a.AccountNO <> t.AccountNo 

任何想法?

WITH TEST AS 
(
    SELECT DISTINCT AccountNo, SUBSTRING(APartyNO, 3, LEN(APartyNo)) AS APartyNoCut 
    FROM (SELECT DISTINCT AccountNo, APartyNo 
      FROM prf_BatchItems 
      WHERE BatchID = 127 
      AND Code1 = 'DEDF' 
      AND APartyNo NOT LIKE '04%' 
      AND ( Left(APartyNo,2) = '02' 
        OR Left(APartyNo,2) = '03' 
        OR Left(APartyNo,2) = '07' 
        OR Left(APartyNo,2) = '08') 
     GROUP BY AccountNo, APartyNo 
    UNION 
    SELECT DISTINCT AccountNo, APartyNo 
     FROM prf_BatchItemAdditionalAPartyNos 
    WHERE BatchID = 127 
    GROUP BY AccountNo, APartyNo) a 
) 
SELECT Code2, TypeName, CallTypeName, --SUM([Count]), 
     SUM(Duration), SUM(CostGrossExGST) 
FROM 
( 
    SELECT 'WITHOUT STD' AS Type, 
      Code2, b.TypeName, CallTypeName, 
      --SUM([COunt]) AS Count, 
      SUM(DurationSecond) AS Duration, 
      SUM(a.CostGrossExGSt) AS CostGrossExGST 
    FROM prf_BatchItems a 
      INNER JOIN (SELECT * FROM dbo.prf_BillTypeCodes WHERE BillTypeID = 2) b ON a.Code2 = b.BillCodeName 
      INNER JOIN Test t ON a.AccountNO <> t.AccountNo 
    where BatchID = 127 
      AND Code1 = 'DC' 
      AND ServiceTypeName = 'MobileNet' 
      AND CallTypeName = 'National Direct Dialled calls' 
      AND (LEFT(BPartyNo,2) <> '02' AND LEFT(BPartyNo,2) <> '03' OR LEFT(BPartyNo,2) <> '07' OR LEFT(BPartyNo,2) <> '08') 
      AND BPartyNo NOT LIKE '04%' 
      AND BPartyNo NOT LIKE '1%' 
    GROUP BY --a.AccountNo, 
      Code2, b.TypeName, CallTypeName) zz 
GROUP BY Code2, TypeName, CallTypeName 

回答

3

看起來像AccountNO之一在此行INNER JOIN Test t ON a.AccountNO <> t.AccountNo不是整數,並且具有不能被轉換爲整數

什麼是立柱的兩個表

在數據類型的valuse
+0

它們都是VARCHAR(32) – dcpartners 2010-08-10 00:55:47

+0

在這種情況下,逐個運行所有查詢,從一個查詢開始並繼續,直到您運行所有這些查詢,失敗的查詢會遇到問題,然後調查那些存儲在這些查詢中的內容專欄 – SQLMenace 2010-08-10 01:01:00

+0

你是對的!這個問題並不是真的在這個陳述上。我確實有SUM(DurationSecond),它在加入後比INT大。 :) 再次感謝。 – dcpartners 2010-08-10 01:15:19

0

有些時候,sql查詢中的值的值大於可以容納的整數,所以將數據類型從int(整數)更改爲Bigint,問題就解決了。

+0

請給出SQLServer的整數限制 – user1428716 2013-02-26 03:00:46

+1

-2,147,483,647至2,147,483,647 http://msdn.microsoft.com/zh-cn/library/ms187745.aspx – jjzd2w 2013-04-23 18:33:46

相關問題