SQL

SQL SELECT文の高度な関数

SQL

docs.google.com

SQL 高速化の金言

BIサービス SQL高速化の仕組み SQL高速化 を考えてみます。 2つのレコードを接続するとき 例1 1万行の検査データ と 100行の 品目マスタデータ があり 検査データの 品目コードに 品目マスタの 品目名と標準原価をつなぐ。 方法 ①LEFT OUTER JOIN ②INNE…

Excel VBAで簡体字をあつかうことができるか?

中国語の簡体字を、SQLサーバに登録する。というテーマです。 自分は いつもExcelシートで登録データを編集して、VBAでSQLサーバにアップロードしています。 ところが、Excelで簡体字は編集できまがVBAでは Unicode が扱えず、結果として簡体字が '???' と壊…

SQL サブクエリの入れ子のサブクエリ ここまでできます。

必要に迫られて、Case When 内に サブクエリをいれてみました。 備忘でここに記します。 ----------------------------------- ,case when Cnt = (select count(distinct(Place)) PlaceCnt from [dbo]. [Table_xxxx] where InspstepsID = A.InspstepsID and …

SQL 困ったときのトリガー頼み

SQL

SQLテーブルのレコードの日付列が空白になっている!! エッ その日付で集計分析しているのに!! 登録するタブレット側のプログラムを修正するには時間がない。 こんな時はトリガーの出番です。トリガーとは、レコードが新規追加や更新が発生した時に作動す…

SQL ROW_NUMBER() OVER(partition で欲しいデータを得る

同じ品物を何度も購入したとき、最安値は? 同じ品物を何度も購入したとき、最後に購入した時の価格は? など いろんな条件でデータが欲しくなります。 そんなとき、ROW_NUMBER() OVER(partition を使うと便利です。 元々のデータ 検索するコード SELECT * F…

SQL  続:月初と月末日を求める

このテーマで、関数をつかうと、シンプルに作れます。 EOMONTH という関数は 月末を求める関数です。 EOMONTH('対象日', 追加月数) 月数はマイナスもあり ------------------------------------------------ サンプルコード SELECTDATEADD(Day,1,EOMONTH(ge…

SQL 累積を求める SUM() over (Partition By ** ROWS UNBOUNDED PRECEDING)

SQL で データ集計して、時系列のデータの累積を求める というテーマがあります。 つまり 開始から各行までの合計だったり、過去7回の累計で移動平均を求める など これまではストアドプロシジャのカーソル処理で1行づつ計算する方法を採っていました。 と…

SQL 数字文字の桁数を調整する

SQL

10, 20, 30, , , といった数字文字を 0010, 0020, 0030, , , のような 4桁数字に変換することはよくあります。 --- コード ---- DECLARE @No nvarchar(20) = '20' SELECT RIGHT('0000' + @No,4) as Num4 ---- 結果 ----- Num40020 ------------------ それ…

SQL 月初日と月末日

よく使うのですが、毎回コーディングすると大変なので、備忘でしるします。 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 規定値に関数使って作ってみた

SQL

SQL規定値を作ってみた。 以前から使っていたが、規定値内に関数が使えることを検証したかった。 内容は レコードの保存時刻を 規定値で登録する、というもの 下図:テーブル定義の 「規定値またはバインド」に 関数をいれる。 図は ユニバーサル時刻なので…

SQLで日付時刻の6分刻み文字を作る

日付時刻の6分刻み文字を作る 10分刻み、6分刻み といった時間枠の箱の中の イベント発生件数や 合計値を求めるために、 Where 発生時刻 >= '2017/10/07 09:06:00' and 発生時刻 < '2017/10/07 09:12:00' とやると 実行時間が恐ろしく長くなる これを回避…

SQL備忘 時刻指定で日付を変更する

SQL

難しくはないけど、思い出すのは大変なんですね。 キーワード WHEN THEN END 列名 CONVERT(VARCHAR,[LDatetime],108) CONVERT(Date,CONVERT(varchar,[LDatetime],111)) 日付時刻は 深夜24時で、日付が変更されますが、 実際の稼働日は、朝6時 や 朝8時30分 …