共通のIDを共有する行が1行の出力に要約されるように、データベーステーブルを要約する方法が必要です。
私のツールはSQLiteとPython2.xです。
たとえば、私の地元のスーパーマーケットでの果物の価格の次の表を考えると...
+--------------------+--------------------+--------------------+
|Fruit |Shop |Price |
+--------------------+--------------------+--------------------+
|Apple |Coles |$1.50 |
|Apple |Woolworths |$1.60 |
|Apple |IGA |$1.70 |
|Banana |Coles |$0.50 |
|Banana |Woolworths |$0.60 |
|Banana |IGA |$0.70 |
|Cherry |Coles |$5.00 |
|Date |Coles |$2.00 |
|Date |Woolworths |$2.10 |
|Elderberry |IGA |$10.00 |
+--------------------+--------------------+--------------------+
...各スーパーマーケットでの各果物の価格を示す要約表を作成したいと思います。空白はNULLで埋める必要があります。
+----------+----------+----------+----------+
|Fruit |Coles |Woolworths|IGA |
+----------+----------+----------+----------+
|Apple |$1.50 |$1.60 |$1.70 |
|Banana |$0.50 |$0.60 |$0.70 |
|Cherry |NULL |$5.00 |NULL |
|Date |$2.00 |$2.10 |NULL |
|Elderberry|NULL |NULL |$10.00 |
+----------+----------+----------+----------+
文献ではこれを「ピボットテーブル」または「ピボットクエリ」と呼んでいると思いますが、SQLiteはサポートしていないようPIVOT
です。(その質問の解決策はハードコードされたLEFT JOIN
sを使用します。「列」の名前が事前にわからないため、これは私にはあまり魅力的ではありません。)
今のところ、Pythonでテーブル全体を反復処理し、のを累積することdict
でdicts
これを実行します。これは少し厄介です。私は、PythonまたはSQLiteのいずれかで、データを表形式で提供するより優れたソリューションを受け入れています。