ラベル SQL の投稿を表示しています。 すべての投稿を表示
ラベル SQL の投稿を表示しています。 すべての投稿を表示

2007/01/28

SQL ROW_NUMBER()

以前にOracleでselect実行時に行範囲をするのに Row_Number()を使ってたんですが、SQLServerだと簡単には出来なかったんですが、ちょっと勘違いして書いてしまったSQL文が通ってちょっとビックリしました。

SQLServer 2005から実装されのかなと。

MSDN Onlineで見たら、ページ指定のやり方のサンプルとかこんな感じで出てました。



DECLARE @pagenum AS INT, @pagesize AS INT
SET @pagenum = 2
SET @pagesize = 3
SELECT *
FROM (SELECT ROW_NUMBER() OVER(ORDER BY score DESC, speaker) AS rownum,
speaker, track, score
FROM SpeakerStats) AS D
WHERE rownum BETWEEN (@pagenum-1)*@pagesize+1 AND @pagenum*@pagesize
ORDER BY score DESC, speaker

なんか要望というか待望してたけど忘れた頃に使えるようになってて、ちょっと嬉しい感じ。

もうそんなにOracle使うこともないんですが、SQLServerも自分でインストールして設定・チューニングとかはもうツラくなってきてたりもします。自分の環境はVisual Studioと一緒にインストールされるDeveloperなバージョンで十分だし。

こんな感じなんでDB系のSpecialistとかの方とは仲良くしてたいです。

続きを読む・・

2006/12/16

SQL, Query, Microsoft Access

別にMicrosoft Accessに限った話ではないですが、この手のRADなツールって悩ましいですね。Proto Typeな物を作ったり、ちょっとしたデータの分析とかには便利なんですが、育ってしまった結果としてなのかトンデモなく巨大なApplicationを作ってしまっていたりするのを見ると、ちょっと悲しくなります。

関わらなくていいなら別に問題はないのですが、もう手を入れるというかバグ潰しとか付き合いたくないんですってのが結構ありませんか?

TableやQueryにしてもVisualなBuilderを使って作ったんでしょうが、巨大すぎてGUIで見ても端まで見えるわけではないし、SQLで見ても自動生成されたのなんか見れたものではないですから。 当然のごとく定義書なんか存在しなくて現物のみとか。

VBAなコードにしても、何時の時代のコードだよってぐらいに古臭い書き方してたり、AccessというかVBAの限界に挑戦するかのように長く巨大なFunction。Option Explicit宣言も無く、突如登場する謎の変数。綴りはローマ字を省略した感じなのか意味不明。data1とかkingaku2とかってのも添えてる数字が痛いというか、なんの金額だよとか・・・。

そしてデータ型はDouble。 不思議な丸め処理で都合を合わせてるのか結果は合ってたりもするけど・・・・・・・・・。

当然の事ながら、複数ユーザー対応というか複数ユーザーで共通データを使用中。 この手はデーターが巨大になるに従いファイル共有型であるAccessでの処理には限界があって、淘汰されるべきものだったんですが、そこにリモートデスクトップ登場でWindows Server上で利用する事でパフォーマンスアップしたんで延命というかさらなる拡張・肥大化。

高価なServer機器も売れるしもうベンダー側は大満足とかって話もあるかもしれませんが、付き合い切れませんからマジで。

続きを読む・・