SSブログ

SQL いろいろ

 

Order by field ASC = 昇順

Order by field DESC = 降順

 

 

Group by と Order by の併用

 

Group by と Order by を併用したいケースはいくつかあるが、

Group by は Order by より先に処理されるため、併用が難しい。

 

Group By されたレコードのうち最新日付のレコードのみを抽出

select cate1, field1, max(create) as max_date from obj_table group by cate1, field1 order by max_date desc;

 

サブクエリでは? ちょっと怪しい

select cate1, field1, max(create) as max_date from (select * from obj_table order by create desc) as RS group by cate1, field1

 

グループ化したデータをHAVING句で絞り込む

SELECT CustomerID,AVG(TotalDue) AS 平均支払額

  FROM Sales.SalesOrderHeader

  WHERE CustomerID < 100

  GROUP BY CustomerID

  HAVING AVG(TotalDue) >= 1000

 

Oracleでは、null と 空文字=BLANK() はあいまいだが、

SQL serverでは区別される

 

  isnull(field, '')

 

nullを空文字に置き換える

 

  space(-1) は null が返る

 

 

 

文字列からスペースを削除する

  文字列の前後のスペースは、

    select rtrim(ltrim(スペースの入った文字列))

  文字列の中にもスペースあるときは、

    select replace(スペースの入った文字列, ' ', '')

 

 

 

 

SQL-Serverの自動採番(IDENTITY値)

 

 

SQL serverでは、Accessの iif の代わりに case を使う

<ACCESS>

  select ・・・,

    iif(field1=100 And field2 Is Not Null,'certified', Null) as Result

  from  obj_table

 

<SQL Server>

  select ・・・,

    case when field1=100 And field2 Is Not Null then 'certified' else Null end as Result

  from  obj_table

 

 

テーブルのコピー

  select * into NewTable from SourceTable;

    主キー設定は付いてこない

 

 

SISS(DTS)パッケージの格納場所

SQL server2005 以降では、

  ファイルシステム指定の場合、

    C:\Program Files\Microsoft SQL Server\110\DTS\Packages

  msdb指定の場合、

    msdb.sysssispackages

    (SQL Server Management Studio の integration service へ接続して確認)

SQL Server2000 では、

  msdb指定の場合、

    (SQL Server Management Studio の データベース へ接続して、データ変換サービス > ローカルパッケージ で確認)

 

 


SQLServerでシステム日付を取得する

SQL Serverのシステム日付は以下のSQL文で取得できます。

    select current_timestamp, getdate(), getutcdate()

 

現在日付と比較する Select文の例:

    select * from M_TABLE where begin_date <= convert(varchar,current_timestamp,112)
          and end_date >= convert(varchar,current_timestamp,112)

 

※convertで日付を文字列に変換できる。

  convert(varchar,current_timestamp,111) -> 2014/05/01
  convert(varchar,current_timestamp,112) -> 20140501
  convert(varchar,current_timestamp,120) -> 2014-05-01 00:00:00

(SQL Server)

 

続きを読む


タグ:SQL

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。