SQL
docs.google.com
BIサービス SQL高速化の仕組み SQL高速化 を考えてみます。 2つのレコードを接続するとき 例1 1万行の検査データ と 100行の 品目マスタデータ があり 検査データの 品目コードに 品目マスタの 品目名と標準原価をつなぐ。 方法 ①LEFT OUTER JOIN ②INNE…
中国語の簡体字を、SQLサーバに登録する。というテーマです。 自分は いつもExcelシートで登録データを編集して、VBAでSQLサーバにアップロードしています。 ところが、Excelで簡体字は編集できまがVBAでは Unicode が扱えず、結果として簡体字が '???' と壊…
必要に迫られて、Case When 内に サブクエリをいれてみました。 備忘でここに記します。 ----------------------------------- ,case when Cnt = (select count(distinct(Place)) PlaceCnt from [dbo]. [Table_xxxx] where InspstepsID = A.InspstepsID and …
SQLテーブルのレコードの日付列が空白になっている!! エッ その日付で集計分析しているのに!! 登録するタブレット側のプログラムを修正するには時間がない。 こんな時はトリガーの出番です。トリガーとは、レコードが新規追加や更新が発生した時に作動す…
同じ品物を何度も購入したとき、最安値は? 同じ品物を何度も購入したとき、最後に購入した時の価格は? など いろんな条件でデータが欲しくなります。 そんなとき、ROW_NUMBER() OVER(partition を使うと便利です。 元々のデータ 検索するコード SELECT * F…
このテーマで、関数をつかうと、シンプルに作れます。 EOMONTH という関数は 月末を求める関数です。 EOMONTH('対象日', 追加月数) 月数はマイナスもあり ------------------------------------------------ サンプルコード SELECTDATEADD(Day,1,EOMONTH(ge…
SQL で データ集計して、時系列のデータの累積を求める というテーマがあります。 つまり 開始から各行までの合計だったり、過去7回の累計で移動平均を求める など これまではストアドプロシジャのカーソル処理で1行づつ計算する方法を採っていました。 と…
10, 20, 30, , , といった数字文字を 0010, 0020, 0030, , , のような 4桁数字に変換することはよくあります。 --- コード ---- DECLARE @No nvarchar(20) = '20' SELECT RIGHT('0000' + @No,4) as Num4 ---- 結果 ----- Num40020 ------------------ それ…
よく使うのですが、毎回コーディングすると大変なので、備忘でしるします。 SELECT dateadd(day,0,convert(date,convert(nvarchar,year(dateadd(MONTH,0,dateadd(hour,9,getdate())))) + '/' + convert(nvarchar,month(dateadd(MONTH,0,dateadd(hour,9,getda…
SQL規定値を作ってみた。 以前から使っていたが、規定値内に関数が使えることを検証したかった。 内容は レコードの保存時刻を 規定値で登録する、というもの 下図:テーブル定義の 「規定値またはバインド」に 関数をいれる。 図は ユニバーサル時刻なので…
日付時刻の6分刻み文字を作る 10分刻み、6分刻み といった時間枠の箱の中の イベント発生件数や 合計値を求めるために、 Where 発生時刻 >= '2017/10/07 09:06:00' and 発生時刻 < '2017/10/07 09:12:00' とやると 実行時間が恐ろしく長くなる これを回避…
難しくはないけど、思い出すのは大変なんですね。 キーワード WHEN THEN END 列名 CONVERT(VARCHAR,[LDatetime],108) CONVERT(Date,CONVERT(varchar,[LDatetime],111)) 日付時刻は 深夜24時で、日付が変更されますが、 実際の稼働日は、朝6時 や 朝8時30分 …