- PR -

すいません。SQL構文の質問です。

投稿者投稿内容
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-12-07 12:32
もとの大きなSQLをVIEWにして、シンプルな集計のSQLにしては如何でしょうか。

あやこ
会議室デビュー日: 2005/10/13
投稿数: 13
投稿日時: 2005-12-07 14:22
こんにちは。
みなさんありがとうございます。
>おそらく記述ミスなんでしょうね。
そうなんです。もう、はがゆくて仕方がないです。
>VIEWにして
目からうろこです。
HAVING句とか使えないかなぁとか、全然あさっての方向を考えていました。
すごく勉強になります。
ありがとうございます。
でっち6号
大ベテラン
会議室デビュー日: 2005/01/31
投稿数: 176
お住まい・勤務地: Kawasaki
投稿日時: 2005-12-08 11:40
こんにちは、でっちです。

ピンポイントなんですけど、
引用:

ISNULL(CONVERT(VARCHAR,(CONVERT(VARCHAR,DATEPART(yyyy,日付)) + '/' +
RIGHT('0' + CONVERT(VARCHAR,DATEPART(mm,日付)), 2) + '/' +
RIGHT('0' + CONVERT(VARCHAR,DATEPART(dd,日付)), 2))),'') AS 日付


ここって
ISNULL(CONVERT(VARCHAR,日付,111),'') AS 日付
に単純化できませんか?
前後の流れからしてこの列で連結してる様ですが、view作るにしてもまた使いそうですので一応。

個人的にはここまで出来てるなら、view作るより
INNER JOIN (
SELECT 営業先ID,MAX(ISNULL(CONVERT(VARCHAR,日付,111),'')) AS 日付
FROM 営業データ GROUP BY 営業先ID
) 営業データ2
ON (
営業データ.営業先ID=営業データ2.営業先ID
AND ISNULL(CONVERT(VARCHAR,営業データ.日付,111),'')=営業データ2.日付
)
と付けてあげる方が簡単じゃないかと思います。

#111ってシステムの日付設定に依存しましたっけ?
#Microsoftの解説見ると111は"世紀付き"だからOKかな?
あやこ
会議室デビュー日: 2005/10/13
投稿数: 13
投稿日時: 2005-12-08 13:47
こんにちは。
どうもありがとうございます。
すごく勉強になります。
SQLの入門書は一応やったんですけど、実務ではまともにやる機会がなかったので、
今、他のシステムで使っているデータベースとSQL文をコピーさせて頂いて、
それを参考にしながら、クエリアナライザで試行錯誤しているところです。
日付の所については、CONVERTやDATEPARTなどの関数の意味を調べただけで、
正直そのままコピーして使ってました。
同じことをするにも、いろいろ方法があるんですね。
このスレッドに限らず、スレッドを読んでいると、つくづく感心させられ、勉強になります。(あまりに高度な質問と返答のやりとりを読んだりすると、弱気になってしまったりもするのですが・・・。)
助かりました。
また、ひんしゅくを買うようなレベルの低い質問をしてしまうかも知れませんが、
その際には、よろしくお願いします。
みなさん、ありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)