スマコレ内ではSQLを用いてデータを加工・集約した仮想テーブルの作成、データ連携時のデータ指定、pivot機能で任意の処理を加えたデータの作成が行えます。
それぞれの設定方法と良く使われるSQL構文は以下の通りです。
9-1 Viewテーブル作成の際によく使われるSQL
準備中
9-2 連携機能でよく使われるSQL
準備中
9-3 Pivot機能のカスタム関数でよく使われるSQL
Pivot機能では、SQLを使って加工したデータ(カスタム項目)をベースにした集計が行えます。
カスタム項目を作成する際によく使われるSQLは以下の通りです。
※Pivot機能やカスタム項目の作成方法は こちら をご確認ください。
条件分岐(CASE式)
データを特定の条件別に表記を置き換えて表示することができます。
| SQL | 補足 | |
| 基 本 文 | CASE WHEN [カラム] 条件① THEN ‘置き換えたい値①’ WHEN [カラム] 条件② THEN ‘置き換えたい値②’ ELSE ‘置き換えたい値③’ | カラムの中で条件①に一致する値を、 ‘置き換えたい値①’に置き換える。 次に、条件②に一致する値を、 ‘置き換えたい値①’に置き換える。 条件①にも②にも当てはまらない値は、 ‘置き換えたい値③’に置き換える。 |
| 例 文 | CASE WHEN price >= 1000 THEN ‘高’ WHEN price >= 500 THEN ‘中’ ELSE ‘低’ | カラム”price”が1000以上の場合は、 ‘高’という値に置き換える。 カラム”price”が500以上の場合は、 ‘中’という値に置き換える。 その他は’低”に置き換える。 |
条件部分は、以下のような条件が使えます。
| 意味 | 式 | 例(式) | 例(意味) |
| 等しい | = | CASE WHEN age = 61 THEN ‘還暦’ ELSE ‘その他’ END | ageが61と等しければ還暦と表示。 それ以外はその他と表示。 |
| 等しくない | <> | CASE WHEN country <> ‘Japan’ THEN ‘海外’ ELSE ‘国内’ END | countryがJapan以外の場合は海外と表示。 それ以外は国内と表示。 |
| ~より大きい | > | CASE WHEN age > 17 THEN ‘成人’ ELSE ‘未成年’ END | ageが17より大きければ成人と表示。 それ以外は未成年と表示。 |
| 以上 | >= | CASE WHEN age >= 18 THEN ‘成人’ ELSE ‘未成年’ END | ageが18以上であれば成人と表示。 それ以外は未成年と表示。 |
| ~より小さい | < | CASE WHEN age < 18 THEN ‘未成年’ ELSE ‘成人’ END | ageが18より小さければ未成年と表示。 それ以外は成人と表示。 |
| 以下 | <= | CASE WHEN age <= 17 THEN ‘未成年’ ELSE ‘成人’ END | ageが17以下であれば未成年と表示。 それ以外は成人と表示。 |
| 範囲の指定 | BETWEEN | CASE WHEN score BETWEEN 80 AND 100 THEN ‘A’ WHEN score BETWEEN 50 AND 79 THEN ‘B’ ELSE ‘C’ END | scoreが80~100はA。 scoreが50~79はB。 それ以外はC。 |
| リスト判定 | IN () | WHEN country IN (‘JP’, ‘US’, ‘UK’) THEN ‘対象国’ ELSE ‘その他’ | countryの中にJP,US,UKがあれば対象国と表示。 含まれない国名の場合はその他と表示。 |
文字列の結合
文字列結合を使うことで、任意のカラム同士をつなげた値を作成できます。
| SQL | 補足 | |
| 基 本 文 | [カラムA] || ‘ ‘ || [カラムB] | “カラムAカラムB”形式で値の作成できる。 |
| 例 文 | first_name || ‘ ‘ || last_name | first_name 内の値に”佐藤”があり 、 last_name 内の値に”太郎”があった場合 佐藤太郎 という結果が表示される。 |
NULL(データがないデータ)の加工
値がNULLの場合に意図的にデータを割り当てることができます。
| SQL | 補足 | |
| 基 本 文 | COALESCE([カラム], ‘置き換えたい値’) | 指定したカラムの値が NULL の場合置き換えたい値を表示する。 |
| 例 文 | COALESCE(team, ‘未配属’) | team が NULL の場合は '未配属' を表示。 |
文字の抜き出し
先頭から特定の文字を取り出すことができます。
| SQL | 補足 | |
| 基 本 文 | SUBSTRING([カラム], 開始位置, 文字数) | カラム中の値の開始位置(何文字目か)から文字数のデータを抜き出す |
| 例 文 | SUBSTRING(code, 1, 3) | カラム”code”の1文字目から3文字目までのデータを抜き出す |
文字の置換
指定した文字が含まれる場合、文字列の一部を置き換えることができます。
| SQL | 補足 | |
| 基 本 文 | REPLACE([カラム], ‘置換前の値’, ‘置換後の値’) | カラムの中に置換前の値があったら、置換後の値に置き換えます。 |
| 例 文 | REPLACE(text, ‘旧’, ‘新’) | textの値に旧があったら新に置き換えます。 |
空白削除
文字列の前後にある 空白(スペース)を取り除くことができます。
| SQL | 補足 | |
| 基 本 文 | TRIM(BOTH ‘ ‘ FROM [カラム]) | カラムの値に空白があったら空白を削除します |
| 例 文 | TRIM(BOTH ‘ ‘ FROM text) | textというカラムの値に含まれる空白を削除します。 |
日時から特定のデータの取り出し
日付型データから特定の要素(年・月・日など)を取り出す
| SQL | 補足 | |
| 基 本 文 | EXTRACT(YEAR FROM [カラム]) | 日付から年だけを取り出す |
| 例 文 | EXTRACT(YEAR FROM order_date) | order_date(yyyymmdd)から、 年にあたるyyyy部分を取り出す。 ※元データが日付型である場合のみ有効。 |
日付型データから取り出せるフィールド(上記のYEARの代替となるもの)は以下の通りです。
| フィールド | 説明 |
| YEAR | 年(西暦) |
| MONTH | 月(1〜12) |
| DAY | 日(1〜31) |
| QUARTER | 四半期(1〜4) |
日時を特定のデータ単位で丸める
日付型データから特定の要素(年・月・日など)別にデータを丸めることができます。
| SQL | 補足 | |
| 基 本 文 | DATE_TRUNC(‘month’, [カラム]) | 日付を月単位に丸める(その月の1日) |
| 例 文 | DATE_TRUNC(‘month’, order_date) | order_date(2025-10-15-15:00:00)のデータを、2025-10-01 00:00:00にする。 |
日付型データから取り出せる単位(上記のmonthの代替となるもの)は以下の通りです。
| 単位 | 説明 |
| year | 年単位 |
| quarter | 四半期単位 |
| month | 月単位 |
| week | 週単位 |
| day | 日単位 |
| hour | 時単位 |
| minute | 分単位 |
今日から数えた特定データの取り出し
今日から特定の条件(X日前まで、Xヶ月前まで等)で数えたデータのみを取り出すことができます。
| SQL | 補足 | |
| 基 本 文 | [カラム] >= CURRENT_DATE – INTERVAL ‘X days’ | 対象カラムが今日からX日前までのデータを取得する。 |
| 例 文 | order_date >= CURRENT_DATE – INTERVAL ’30 days’; | order_date(発注日)が 今日から30日前のデータを取得する。 |
| 基 本 文 | [カラム] >= CURRENT_DATE + INTERVAL ‘X days’ | 対象カラムが今日からX日後までのデータを取得する。 |
| 例 文 | order_date >= CURRENT_DATE + INTERVAL ’30 days’; | order_date(発注日)が今日から30日後のデータを取得する。 |
対象とできるデータの単位(上記のdaysの代替となるもの)は以下の通りです。
| 単位 | 意味 |
| month | 月 |
| days | 日 |
| years | 年 |
| hours | 時間 |
データ型変換
対象データの型(文字列、数値、日付型 等)を整形することができます。
例えば、もともと文字列のデータを日付型にしたり、数値型のデータを文字列型にと加工が行えます。
| SQL | 補足 | |
| 基 本 文 | CAST([カラム] AS データ型) | カラムを指定したデータ型に変換する。 |
| 例 文 | CAST(amount AS numeric) | amount を数値として扱えるように変換。「amount::numeric」も同じ意味。 「::」 は型変換演算子。 |
良く使われるデータ型は以下の通りです。
| データ型 | 説明 |
| text | 文字列 |
| date | 日付(年-月-日) |
| integer | 整数 |
| numeric | 少数以下を含む数値 ※桁数を指定する場合は、numeric(5,2)のように使うと 文字列で12345.67と書かれていたデータが 12345.67整数5桁少数2桁に変換されます。 |
