2010-12-20 76 views
2

下面的查詢計算了加利福尼亞州2009財年與2010財年之間產品的預測值。我被分配來計算其餘的狀態(請參閱州表)。 SQL SERVER中有沒有可以計算狀態百分比的方法?我目前手動計算每個狀態。我想知道是否有人可以幫助我。大家節日快樂! (請注意,我必須seperately使用狀態表,由於數據的完整性。我在想,如果遊標會做,但我還沒有。)SQL SERVER查詢幫助(使用光標?)

DECLARE @LOCATION VARCHAR(2) 
SET @state = 'CA' 

SELECT NUMBER1/CAST(NUMBER2 as FLOAT) as PERCENTAGE 
FROM 
(
    SELECT COUNT (PRODUCT) as NUMBER1 
    FROM SOMETABLE1 
    WHERE LOCATION = @state 
    AND DATE >='10/1/2008' 
    AND DATE <' 10/1/2009' 
)X, 

(
    SELECT COUNT (PRODUCT) as NUMBER2 
    FROM SOMETABLE2 
    WHERE LOCATION = @state 
    AND DATE >='10/1/2009' 
    AND DATE <' 10/1/2010' 
)Y 

PERCENTAGE 
1.400742 


SELECT state 
FROM STATES 

STATE 
CA 
AZ 
TX 
NV 
NM 
UT 
OR 
CO 
WA 
+4

PLEEEEAAAAASSSSSEEEEE!不要使用'光標' – 2010-12-20 20:09:40

+0

是的,只有4個人接受了你的15個問題的答案,即使他們很多都是正確的......你應該接受提供給你的答案 – Lamak 2010-12-20 21:07:56

回答

2

您可以加入在STATES表。沿着這些線:

SELECT X.STATE, X.NUMBER1/CAST(Y.NUMBER2 as FLOAT) as PERCENTAGE 
FROM 
(
    SELECT S.STATE, COUNT(*) as NUMBER1 
    FROM SOMETABLE1 AS S1 
    INNER JOIN STATES AS S ON S1.LOCATION = S.STATE 
    AND S1.DATE >='10/1/2008' 
    AND S1.DATE < '10/1/2009' 
    GROUP BY S.STATE 
)X, 

(
    SELECT S.STATE, COUNT (*) as NUMBER2 
    FROM SOMETABLE2 AS S2 
    INNER JOIN STATES AS S ON S2.LOCATION = S.STATE 
    AND S2.DATE >='10/1/2009' 
    AND S2.DATE < '10/1/2010' 
    GROUP BY S.STATE 
)Y 
WHERE X.STATE = Y.STATE