2017-02-06 4 views
0

問題は次のとおりです。計算された値を返すためにネストされたSQL文を定義する方法は?

// SQL statement for ms access 2010 
SELECT 
    ID, SUM(fund_assets) AS Sum_FV, COUNT(*) AS DataCount, 
    (Sum_FV/DataCount) AS Result 
FROM 
    V_Assets_L12 
WHERE 
    Datum >= DATEADD("m", -12, #6/2/2017#) 
    AND Datum <= #6/2/2017# 
    AND ID = 325 
GROUP BY 
    ID 
ORDER BY 
    ID; 

結果はONE IDの正しいです:私は、次のSQL文を持っています!しかし、私はV_Assets_L12のすべての既存のIDのリストが必要です。だから私の最初のアイデアは、次のように入れ子になったSQLステートメントを定義することでした:

SELECT 
    ID, SUM(fund_assets) AS Sum_FV, COUNT(*) AS DataCount, 
    (Sum_FV/DataCount) AS Result 
FROM 
    V_Assets_L12 
WHERE 
    Datum >= DATEADD("m", -12, #6/2/2017#) 
    AND Datum <= #6/2/2017# 
    AND ID IN (SELECT DISTINCT ID 
       FROM V_Assets_L12 
       ORDER BY ID ASC) 
GROUP BY 
    ID 
ORDER BY 
    ID; 

しかし、これは私のためには機能しません。何が間違っていたのですか?

答えて

1

あなただけWHERE句で条件を削除することができます:あなたの答えのための

SELECT ID, SUM(fund_assets) AS Sum_FV, COUNT(*) AS DataCount, 
     (Sum_FV/DataCount) AS Result 
FROM V_Assets_L12 
WHERE Datum >= DateAdd("m", -12, #6/2/2017#) And 
     Datum <= #6/2/2017# 
GROUP BY ID 
ORDER BY ID; 
+0

感謝...それは私が、例えば3つのIDを選択する場合は何ソリューション:) – yuro

+0

ました325、466、および30014。どのようにしてこの問題を解決できますか? – yuro

+1

私は 'IN'の例で解決しました:) – yuro

関連する問題