SQL

SQL

[SQL] 連番データ行や期間内の全日付行を生成する方法 [SQL Server]

SQL で連番データ行や範囲内の全日付行を生成する方法 SQL で何もないところから連続するデータを生成する方法をまとめます。対象データ自体は歯抜けになっているけれど、固定件数分取得したい場合などの要件を満たそうとすると、ここでまとめた方法が使えるかもしれません。 今回は SQL Server を対象としますが、考え方は別のデータベースでも使えるはずです。 連番のデータを生成できると、範囲内の日付 […]

[SQL Server] 日時を操作する関数の使い方まとめ [DATE][TIME]

SQL Server で日付をや時間を操作する関数 SQL Server で日付や時間を操作する方法を調べました。例えばある日付から3日後の日付を取得したり、2つの日付の差分日数を計算したりする方法をSQL上で関数を使って実現します。 日付や時間を表すデータ型には以下のようなものがあります。 date datetime datetimeoffset datetime2 smalldatetime […]

  • 2017.11.27
  • ,

[MySQL]GROUP_CONCATで縦のデータをカンマ区切りで取得

複数レコードのデータを連結して取得したい MySQL(MariaDB)で、GROUP_CONCAT を使って、縦に並んだ複数レコードのデータを1列(カンマ区切り)で取得するSQLを書く方法をまとめます。 SQL Serverでは、FOR XML PATH('') を使用して取得できます。 [SQL Server] 縦に並んだデータを横にカンマ区切りの列データで取得する方法 上記記事では SQL S […]

[SQL Server] 縦に並んだデータを横にカンマ区切りの列データで取得する方法

縦に複数のデータを横並びで取得したい 縦にたくさん並んだデータについて、横に並べて一つの可カンマ区切りの列データとして取得したい場合があったのでその方法をまとめます。 RMDBは SQL Server です。FOR XML PATH('') を使って実現します。 例えば、部署と社員の関係を以下のようなリレーションで表現します。 部署マスタと社員マスタがあり、社員マスタには所属部署を表す部署IDを保 […]

ブラウザでRMDB別のSQLを実行できる「SQL Fiddle」

ブラウザ上でRMDBごとにSQLの実行結果を確認したい SQL Fiddle ブラウザ上でSQLの実行結果が確認したいということがたまにあります。SQLの検証用だったり、あるいは勉強のためだったりです。 いちいちRMDBの環境を用意して実行するのは手間ですし、ブラウザ上でさっと確認する方法がないかと思って探していると、ありました。紹介します。 SQL Fiddle というWebサービスです。無料で […]

[MS SQL] Insertしたデータの ID(IDENTITY) を取得する方法

Insertしたデータの ID(IDENTITY) を取得する方法     SQL Server では、テーブルの列に対して自動でIDを採番してくれる IDENTITY というプロパティがあります。このプロパティが設定されている列については、手動で値を登録することができません。     例えば INSERT 処理後、このIDを使って関連するテーブルへデータを続けて登録したい場合は、以下のように(S […]

SQL

[SQL] 再帰クエリでツリー(木)構造を扱う

SQLにおける再帰的な処理 リレーショナルデータベース(RDB)には、階層的なデータ構造(例:ツリー構造など)を扱うことができる、再帰クエリをサポートしているものがあります。再帰クエリを使の使い方を以下に紹介します。 再帰クエリをサポートするRDB Wikipediaによると以下のRDB(バージョンによっては利用不可)は再帰クエリを使えるようです。今回は以下のうち、SQLServer と SQLi […]