2012年2月28日火曜日

[.NET]明細テーブルから集計テーブルに加工する方法

明細も出すし、集計も出す…といった際に、
GROUP BY1文で解決すればいいけど、
そうでもない場合や何パターンもある場合に
SQL文をいくつも用意するのは面倒くさい。


基本は明細データを取り出すルーチン1つ用意して、それを加工するようにすると
数値のズレもないし、メンテナンスしやすい。(私は。


処理速度が気にならない場合はこの手を使います。

'----------------------------------------------------

                 
      '↓ここで、明細データをゲットする
      Dim tbl As DataTable = GetMeisaiDT()

                    'ここから加工して集計データを作る!
                    Dim dt As New DataTable
                    dt.Columns.Add("事業部区分", GetType(Integer))
                    dt.Columns.Add("生産量", GetType(Integer))
                    dt.Columns.Add("生産高", GetType(Integer))


                    Dim item As String(,) = { _
                                                {"A部", "事業部区分 = 'A'"}, _
                                                {"B部", "事業部区分 = 'B'"}, _
                                                {"  他", "事業部区分 = 'Z'"}, _
                                                {"合計", ""}}
                    For i As Integer = 0 To item.GetLength(0) - 1
                        Dim dr As DataRow = dt.NewRow
                        dr.Item("事業部区分") = item(i, 0).ToString
                        dr.Item("生産量") = tbl.Compute("SUM(通数)", item(i, 1).ToString)
                        dr.Item("生産高") = tbl.Compute("SUM(生産高)", item(i, 1).ToString)
                        dt.Rows.Add(dr)
                    Next


'----------------------------------------------------

0 件のコメント:

コメントを投稿