データベーステーブルをまとめて共通IDを共有する行を1行の出力にまとめる方法をお伝えしたいと思います。サマリー( "ピボット"?)テーブルを作成
私のツールはSQLiteとPython 2.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 doesn't support PIVOT
.(その問題の解決策は、ハードコードさLEFT JOIN
Sを使用しています。これは本当に私には興味がないので、私ドン
今私はPythonでテーブル全体を反復し、dicts
のdict
を蓄積することでこれを行いますが、それはビットklutzyです。私は、PythonまたはSQLiteのいずれかの優れたソリューションを公開しており、データを表形式で提供します。 python側で
「itertools」の魔法は私の好きな種類の魔法です。他の誰かがSQLiteのソリューションを投稿することを願っていますが、これはすでに私が行っていたことよりも優れています。 –
@ Li-aungYip SQLiteのピボットテーブルのための[サポートしていません](http://www.sqlite.org/cvstrac/tktview?tn=1424)ですので、ここからstackoverflowで〜1000の質問をしてください。しかし、それを行う[perlモジュール](https://github.com/bduggan/SQLite-VirtualTable-Pivot)があります。[here](http://search.cpan.org/~bduggan/SQLite-Pivot) VirtualTable-Pivot-0.02/lib/SQLite/VirtualTable/Pivot.pm)。 – sloth
私は上記のようにピボットテーブルを作成する関数を書くためにこれを使い終えました)、それを一時テーブルとしてデータベースに返します。これにより、ピボットされたデータに対してさらにクエリ( 'JOIN'など)を行うことができます。 テンポラリテーブルはすべて醜いですが、「愚かで動作しても、愚かではありません」 –