-2

表1

Acct Numb Account Type Asset Mkt Val Acct Asset MV 
--------- ------------ ------------- -------------
881009201 Main Account            30           120 
881009201 Main Account            40           120 
881009201 Main Account            20           120 
881009201 Main Account            30           120 
881009203 Sub Account             50            80 
881009203 Sub Account             10            80 
881009203 Sub Account             20            80 

表2

Acct Numb Account Type Asset Mkt Val Acct Asset MV
--------- ------------ ------------- -------------
881009201 Main Account            30           200 
881009201 Main Account            40           200 
881009201 Main Account            20           200 
881009201 Main Account            30           200 
881009201 Sub Account             80           200 

上記の情報を含む Table1 があります。私は 2 種類のアカウントを持っています。

  1. メインアカウント (末尾が 01)
  2. サブアカウント (末尾が 03)

ここで、すべてのメイン アカウントとサブ アカウントを 1 つのアカウント番号にまとめたテーブルが必要です。アカウント番号はメイン アカウント番号と同じですが、アカウント タイプは になりますSub Account

これで、さらに 2 つの列ができました。

  1. 資産市場価値
  2. 口座資産MV

表 1: 列Acct Asset MVはメイン アカウントの合計 (30 + 40 + 20 + 30 = 120) をAsset Mkt Val示し、サブ アカウントの合計 (50 + 10 + 20 = 80) を示します。

表 2:Acct Asset MVすべてのアカウントの合計 (120 + 80 = 200) を含める必要があり、サブ アカウントの [Asset Mkt Val] は 80 である必要があります。

4

1 に答える 1

0

Table2 のデータは次のように導出できるように思えます。

[Table1Totals] という名前の保存済みクエリを作成することから始めます...

SELECT 
    Left([Acct Numb],Len([Acct Numb])-2) AS [Acct Root], 
    Right([Acct Numb],2) AS [Acct Suffix], 
    First(Table1.[Account Type]) AS [FirstOfAccount Type], 
    Sum(Table1.[Asset Mkt Val]) AS [SumOfAsset Mkt Val]
FROM Table1
GROUP BY 
    Left([Acct Numb],Len([Acct Numb])-2), 
    Right([Acct Numb],2);

...戻る...

Acct Root  Acct Suffix  FirstOfAccount Type  SumOfAsset Mkt Val
---------  -----------  -------------------  ------------------
8810092    01           Main Account                        120
8810092    03           Sub Account                          80

次に、Table2 のデータは、メイン アカウント レコード ("*01") の UNION と、各サブ アカウントの単一レコード ("*03") になります。

SELECT
    t1.[Acct Numb],
    t1.[Account Type],
    t1.[Asset Mkt Val],
    (
        SELECT SUM(t1t1.[SumOfAsset Mkt Val])
        FROM Table1Totals t1t1
        WHERE t1t1.[Acct Root]=Left(t1.[Acct Numb],Len(t1.[Acct Numb])-2)
    ) AS [Acct Asset MV]
FROM Table1 t1
WHERE t1.[Acct Numb] LIKE "*01"
UNION ALL
SELECT
    t1t2.[Acct Root] & "01" AS [Acct Numb],
    t1t2.[FirstOfAccount Type] AS [Account Type],
    t1t2.[SumOfAsset Mkt Val] AS [Asset Mkt Val],
    (
        SELECT SUM(t1t3.[SumOfAsset Mkt Val])
        FROM Table1Totals t1t3
        WHERE t1t3.[Acct Root]=t1t2.[Acct Root]
    ) AS [Acct Asset MV]
FROM Table1Totals t1t2
WHERE t1t2.[Acct Suffix] = "03"

...戻る...

Acct Numb  Account Type  Asset Mkt Val  Acct Asset MV
---------  ------------  -------------  -------------
881009201  Main Account             30            200
881009201  Main Account             40            200
881009201  Main Account             20            200
881009201  Main Account             30            200
881009201  Sub Account              80            200
于 2013-06-26T10:00:37.353 に答える