私は次のデータセットを持っています (私のデータベース/スキーマはやや複雑なので、ここにすべての詳細を含めることは現実的ではないことに注意してください)
これは、ベース テーブルから抽出して作成したデータの簡易版ですview
。
ワークアウト_アクティビティ_レコード_id 属性_メトリック_ID 属性_メトリック_値 ワークアウト_エクササイズ_set_created_on 234 17 10 2012-02-06 00:00:00 234 18 30 2012-02-06 00:00:00 234 17 20 2012-03-03 00:00:00 234 18 12.9 2012-03-03 00:00:00 234 17 20 2012-04-02 00:00:00 234 18 40 2012-04-02 00:00:00 . . . (さらに、workout_activity_record_ids についても同様です)
計算する必要があります (よりよく理解するためにデータを調べます)
総計 = (10 * 30) + (20 * 12.9) + (20 * 40)月ごとにまとめました。
乗算に役立つ基本的なアプローチは、行を列に転置することです。したがって、上記の構造は次のようになります-
ワークアウト_アクティビティ_レコード_id ex17 ex18 ワークアウト_エクササイズ_set_created_on 234 10 30 2012-02-06 00:00:00 234 20 12.9 2012-03-03 00:00:00 234 20 40 2012-04-02 00:00:00 . . . . . (残りのworkout_activity_record_idsについても同様)
このために、私はいくつかの SO 投稿を調べ、さまざまな実行可能/実行不可能 (:D) オプションを試した後、次のクエリを思いつきました。
選択する CASE attribute_metric_id WHEN '17' THEN attribute_metric_value END AS 'ex17', CASE attribute_metric_id WHEN '18' THEN attribute_metric_value END AS 'ex18', ワークアウト_エクササイズ_セット_作成_オン FROM エクササイズ_属性 WHERE ワークアウト_アクティビティ_レコード_id = 234
そして、私が得た実際の出力は
ワークアウト_アクティビティ_レコード_id ex17 ex18 ワークアウト_エクササイズ_set_created_on 234 10 NULL 2012-02-06 00:00:00 234 NULL 30 2012-02-06 00:00:00 234 20 NULL 2012-03-03 00:00:00 234 NULL 12.9 2012-03-03 00:00:00 234 20 NULL 2012-04-06 00:00:00 234 NULL 40 2012-04-02 00:00:00
誰かがこれに光を当てることができますか? ありがたく思います。ありがとう!