タロ子の頭の中

音楽と仕事の雑記。

【tableau】カスタムクエリでSQLServerのWITH句はエラーになる

やりたいこと

指定した期間内で、社員の苗字が「田中」さんたちのの出勤時間が最も早い時間をそれぞれ調べる

SQLServerでのWITH句の書き方サンプル

WITH A ( SELECT * FORM 社員マスタ WHERE 社員マスタ.姓 = '田中') , B ( SELECT * FORM 社員出退勤履歴 WHERE 社員出退勤履歴.出勤日時 BTWEEN '2019-12-1' AND '2019-12-7')

SELECT   A.社員ID  ,A.CONECT(A.姓,A.名) AS '姓名'  ,MIN (B.出勤日時)AS '最短出勤日時' FROM A LEFT JOIN B ON B.社員ID = A.社員ID GROUP BY A.社員ID,A.CONECT(A.姓,A.名)

SQLServer上では問題なくこのクエリは実行されますが、 tableaudesktopのカスタムクエリ上はWITH句が読み取ってくれない模様。 しかたなくセオリー通りに書きます。

SQLServerでサブクエリがあるときのの書き方サンプル

SELECT   A.社員ID  ,A.CONECT(A.姓,A.名) AS '姓名'  ,MIN (B.出勤日時)AS '最短出勤日時' FROM ( SELECT * FORM 社員マスタ WHERE 社員マスタ.姓 = '田中') AS A LEFT JOIN ( SELECT * FORM 社員出退勤履歴 WHERE 社員出退勤履歴.出勤日時 BTWEEN '2019-12-1' AND '2019-12-7') AS B ON B.社員ID = A.社員ID GROUP BY A.社員ID,A.CONECT(A.姓,A.名)

まとめ

WITH句は好みの違いなので 使いまわしたいと聞いは便利だし 上から順番に処理が流れる書き方に慣れてる人はWITH句の方が読みやすい

オススメ学習本


Tableauデータ分析 ~実践から活用まで~


データビジュアライゼーションの教科書

Tableauによる最強・最速のデータ可視化テクニック ~データ加工からダッシュボード作成まで~