
随分と久しぶりの投稿。
何年も前に作成した業務アプリを作り変えることになった。
以前のは、Accessをインターフェースにして、VBで作ってあったものを、今回はC#で作り直すことになった。
まぁこれといって大きな壁はないものの、唯一、DBのデータをPIVOTして表示するというところで、躓いたのでメモ。
開発環境は VisualStudio2016 + SQLServer2014 C# Livet
最初、SQL側のストアドでPIVOTして、結果を返そうと思ったが、PIVOTさせたいデータは、支払予定なので、Keyごとに月数がバラバラ。ということは、ストアドのOutPutパラメータの型が確定できない?どうしたら良いかよくわからんので、この方法は却下。
ならば、LINQでPIVOTして表示させようかと調べたが、月数(列数)が不定なので、動的な処理が必要。LINQは基本的に動的処理ができません。。。
結局、ちょっぴり古いDataTableを使ってピボットすることに。
手順としては、
ピボット集計させたいデータをLINQで取得。DataTableに入れておく。
DataTableをピボット集計するコードを
を参考に作成。てか、ほぼ丸写し。
出来上がったDataTableをDataGridに放り込んで出来上がり。。。のはずが集計値が表示されません。
散々悩んで、泥庭というサイトを拝見しましたら、
「これ、おんなじじゃね?」ということで、解決しました。泥庭の管理者さん、ありがとうございました。
ピボットさせる元データの日付部分を"yyyy/MM/dd"から"yyyy年MM月"に変更して完了。

こういうデータを

こういう集計に変更できました。