1

アルファとベータの2つのテーブルがあり、それらが1対多のデー​​タ構造を持っています。例として、テーブルalphaに「State」の列があり、テーブルBに「Colorsyou like」があり、複数選択できるとします。次のような列を持つレポートを作成したいと思います。

STATE          TOTAL     RED     GREEN     BLUE
Alaska         5         1       3         1
Florida        2         2       2         0
New York       10        5       8         1

TOTAL列は、Alphaのレコードの数であり、1対多の関係があるため、色の合計が数を超える可能性があります。色が気に入らなければ、それも少なくなると思います。

このようなレポートをどのように作成しますか。.NETでSQLServerとReportingServicesを使用するので、データテーブルレポートにダンプするだけの複雑なクエリか、レポートによってカウントと合計が行われるそれほど複雑でないクエリのいずれかになります。私はこれに取り組むための最良の方法を本当に知りません。

4

1 に答える 1

3

どの色が列になるかわからないので、マトリックスコントロールを使用する必要があります

クエリを設定する必要があります

SELECT 
    a.State,
    b.ColorName,
    COUNT(b.ColorID) ColorCount
FROM
    alpha a
    LEFT JOIN beta b
    ON a.id = b.a_id
GROUP BY 
    a.State,
    b.ColorName

行の状態、列の色、データのColorCountをドラッグするだけです(Count(ColorID)データフィールドに表示されます))

注:値を正しく表示するLEFT JOINには、Count(*)ではなくand Count(ColorID)が必要です。0

使用できる色PIVOTや合計ケースのテクニックを知っている場合

SELECT state SUM(CASE WHEN Color = 'RED' THEN 1 ELSE 0 END) as Red, ...

于 2013-01-08T18:16:46.833 に答える