0

概要:
さまざまなアカウントの代理店としての農産物の日々の取引を比較して、代理店と会社の所有物の違いを見つけ、新しいもののみを表示します。現在の取引のコードですが、以前の取引ではありません。

目的:
最も頻度の高いコード (例: りんご) で取引を並べ替えます。

現在のコード:

SELECT 
    Count(CurrentTrade.Code) AS CountOfCode, 
    CurrentTrade.portfolio_code, 
    CurrentTrade.Type, 
    CurrentTrade.Code, 
    sum(CurrentTrade.Custodian_holding) AS AgentHolding, 
    sum(CurrentTrade.Company_holding) AS CompanyHolding, 
    sum(CurrentTrade.Difference) AS TotalDifference
FROM 
    CurrentTrade 
    LEFT JOIN PrevTrade 
    ON CurrentTrade.Company_holding = PrevTrade.Company_holding
WHERE 
    PrevTrade.Company_holding) Is Null
GROUP BY CurrentTrade.Code, CurrentTrade.portfolio_code, CurrentTrade.Code, CurrentTrade.Type
ORDER BY count(CurrentTrade.Code);

現在の結果:

 CountOfCode        account_code        Type        Code        AgentHodling        CompanyHolding        TotalDifference
 1                  acc001049        prod        mango        2500                  0        2500
 1                  acc636903        prod        mango        481081.29        481081.285        0.01
 1                  acc179186        prod        mango        453639.61        511285.81        -57646.2
 1                  acc179185        prod        mango        2775               2650        125
 1                  acc170001        prod        grapes       0                     1500        -1500
 1                  acc170000        prod        grapes       2500        0        2500
 1                  acc107104        prod        apple        49797.22        49797.28        -0.06
 1                  acc107103        prod        apple        0        -0.06        0.06
 1                  acc107102        prod        apple        2000        500        1500
 1                  acc107101        prod        apple        0        1500        -1500
 1                  acc001189        prod        apple        0        1090.513        -1090.513

参照:

これに対する回答を受け取りました ( Order by count not sorting correctly - SQL (MS Access 2007) )ので、これはフォローアップです。

質問:

すべての結果を集計せずに頻度で注文し、関連付けられたアカウント番号を含む最高頻度 (リンゴ、マンゴー、ブドウ) で注文することはできますか?
order by に sum を使用する場合、「ORDER BY では集計関数を使用できません」ので、これを実行してもアカウント番号を分けておくことができるかどうかわかりません。

4

1 に答える 1

0

ORDER BY句を外部クエリに引き出すと、内部クエリは次のように頻度を計算します。

SELECT * FROM (
SELECT 
    Count(CurrentTrade.Code) AS CountOfCode, 
    CurrentTrade.portfolio_code, 
    CurrentTrade.Type, 
    CurrentTrade.Code, 
    sum(CurrentTrade.Custodian_holding) AS AgentHolding, 
    sum(CurrentTrade.Company_holding) AS CompanyHolding, 
    sum(CurrentTrade.Difference) AS TotalDifference
FROM 
    CurrentTrade 
    LEFT JOIN PrevTrade 
    ON CurrentTrade.Company_holding = PrevTrade.Company_holding
WHERE 
    PrevTrade.Company_holding) Is Null
GROUP BY CurrentTrade.Code, CurrentTrade.portfolio_code, CurrentTrade.Code, CurrentTrade.Type
) ORDER BY CountOfCode ASC
于 2012-10-16T03:23:32.087 に答える