9.SQL構文に関して

スマコレ内では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以下であれば未成年と表示。
それ以外は成人と表示。
範囲の指定BETWEENCASE
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_namefirst_name 内の値に”佐藤”があり 、
last_name 内の値に”太郎”があった場合
佐藤太郎 という結果が表示される。

NULL(データがないデータ)の加工
値がNULLの場合に意図的にデータを割り当てることができます。

SQL補足


COALESCE([カラム], ‘置き換えたい値’)指定したカラムの値が NULL の場合
置き換えたい値を表示する。

COALESCE(team, ‘未配属’) teamNULL の場合は '未配属' を表示。

文字の抜き出し
先頭から特定の文字を取り出すことができます。

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桁に変換されます。