[解決済み] SQLiteでどのようにピボットするか、つまり、長い形式で保存されたテーブルを広い形式で選択するか?
2022-02-08 19:43:52
質問内容
生徒のデータを格納するテーブルを ロングフォーマット と、全科目の点数を1つのクエリで取得します。
これが私のテーブル構造です。
テーブル
markdetails
## studid ## ## subjectid ## ## marks ##
A1 3 50
A1 4 60
A1 5 70
B1 3 60
B1 4 80
C1 5 95
テーブル
student info
実際の構造
## studid ## ## name ##
A1 Raam
B1 Vivek
c1 Alex
結果セットには、次のようなものが欲しい。 ワイドフォーマット 構造を持つようになります。
テーブル
Student Info
## studid ## ## name## ## subjectid_3 ## ## subjectid_4 ## ## subjectid_5 ##
A1 Raam 50 60 70
B1 Vivek 60 80 null
c1 Alex null null 95
SQLiteでこれを実現するにはどうしたらよいでしょうか?
どのように解決するのですか?
まず、現在のテーブルをtempテーブルに変更する必要があります。
alter table student_info rename to student_name
次に
student_info
:
create table student_info add column (
stuid VARCHAR(5) PRIMARY KEY,
name VARCHAR(255),
subjectid_3 INTEGER,
subjectid_4 INTEGER,
subjectid_5 INTEGER
)
次に
student_info
:
insert into student_info
select
u.stuid,
u.name,
s3.marks as subjectid_3,
s4.marks as subjectid_4,
s5.marks as subjectid_5
from
student_temp u
left outer join markdetails s3 on
u.stuid = s3.stuid
and s3.subjectid = 3
left outer join markdetails s4 on
u.stuid = s4.stuid
and s4.subjectid = 4
left outer join markdetails s5 on
u.stuid = s5.stuid
and s5.subjectid = 5
では、temp テーブルを削除してください。
drop table student_temp
こうして、テーブルを素早く更新することができるのです。
SQLiteには
pivot
関数があるため、左結合をハードコードするのが精一杯です。A
left join
は、結合条件に含まれるすべての行にマッチして
null
は、最初の、つまり左側のテーブルの行が、2 番目のテーブルの結合条件を満たさない場合に使用されます。
関連
-
[解決済み】ストアドプロシージャーのエラー ORA-06550
-
[解決済み】集約関数のないTSQLピボット
-
[解決済み】一括読み込みデータ変換エラー(指定されたコードページに対して型の不一致または無効な文字)1行目4列目(年)について)
-
[解決済み】警告。Aqua Data Studioの集約や他のSET操作でNull値が排除される。
-
[解決済み] INSERT ステートメントが FOREIGN KEY 制約と競合する - SQL Server
-
[解決済み] SQLです。最初の出現箇所のみを返す
-
[解決済み] ORA-00997: LONG データタイプの不正使用に対する回避策
-
[解決済み] あるテーブルから、別のテーブルに存在しないすべてのレコードを選択するにはどうすればよいですか?
-
[解決済み] SQLiteでテーブルが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み】MySQLでピボットテーブルの出力を返すには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ERROR: 参照されたテーブル "bar" の与えられたキーに一致するユニークな制約がありません。
-
[解決済み】Postgresのエラー。式として使用されるサブクエリによって返される複数の行
-
[解決済み】Athena: スケールファクターでリソースを使い果たすクエリ
-
[解決済み】SQL Serverは「集約関数やサブクエリを含む式に対して集約関数を実行できない」が、Sybaseはできる。
-
[解決済み] データ型 varchar の変換エラー
-
[解決済み] エラー (ORA-00923: 期待された場所に FROM キーワードが見つかりませんでした)
-
[解決済み] Presto SQL ピボッティング(言葉は悪いですが)データ
-
[解決済み] ORA-00920: 無効な関係演算子
-
[解決済み] ORA-00918: 列があいまいに定義されています」を解決する方法
-
[解決済み] 時間を時間単位や10分単位でグループ化する方法