2017-12-12 7 views
0

私はSUMとLEFTJOIN SQL

SELECT 
    c.BID AS BID, 
    c.BName AS BName, 
    c.SName AS SName, 
    CASE 
     WHEN T.tHistoryValue1 = 1 THEN 'A' 
     WHEN T.tHistoryValue1 = 2 THEN 'B' 
    END AS TType, 
    COUNT(c.TID) AS TCount, 
    MIN(c.TVaitTime) AS MinVTime, 
    MAX(c.TVaitTime) AS MaxVTime, 
    AVG(c.TVaitTime) AS AvVTime, 
    MIN(c.TPTime) AS MinPTime, 
    MAX(c.TPTime) AS MaxPTime, 
    AVG(c.TPTime) AS AvPTime, 
    AVG(CASE WHEN c.TPTime > 0 THEN c.TPTime ELSE 0 END) AS AvPTime, 
    result.ShowCount 
FROM 
    c 
LEFT JOIN 
    (SELECT * 
    FROM cHistory 
    WHERE cHistoryTypeID = 4) AS T ON (T.TID = c.TID) 
LEFT JOIN 
    (SELECT SUM(CASE WHEN THistoryTypeId = 4 THEN 1 END) - 
      COUNT(CASE WHEN THistoryValue1 = 1 THEN 1 END) AS ShowCount 
    FROM tbl_THistory) AS result ON T.BID = c.BID 
WHERE 
    c.TD = 0 
GROUP BY 
    c.BName c.BID, c.SName, T.THistoryValue1, result.ShowCount 
ORDER BY 
    c.BID, c.BName ASC 

このクエリを書く私はこのエラーを取得する:

Arithmetic overflow error converting expression to data type int.
Warning: Null value is eliminated by an aggregate or other SET operation.

私は何ができますか?

+0

最小、最大、すべてのものをコメントアウトすると、エラーが表示されますか? – Ultimater

+0

テーブルの定義を投稿してください。 – stoneg64

+1

オーバーフローエラーは、SUMが実行されている2番目のJOINから発生している可能性があります。何が起こるかを見るために、そのクエリを単独で実行してみてください。 – Jake

答えて