- - PR -
【SQLServer】 GROUP BYについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-12-03 12:16
いつも参考にさせていただいてます。
SQLServer2005にて開発をしています。 "テーブル1"の"項目A"毎の"項目B"最大値のデータの 項目Cを"1"に更新したいのですが、 GROUP BYにて取得する方法とPARTITION BYにて取得する方法とではどちらがいいのでしょうか? また、どのように違うのでしょうか? ご存知の方がいらっしゃいましたら、ご教授ください。 <GROUP BYにて取得> UPDATE テーブル1 SET 項目C = '1' FROM (SELECT RH.項目A ,RH.項目B FROM テーブル1 As RH INNER JOIN (SELECT 項目A ,Max(項目B) AS Max項目B FROM テーブル1 GROUP BY 項目A) As Wk ON RH.項目A = Wk.項目A AND RH.項目B = Wk.Max項目B) As Wk2 WHERE テーブル1.項目A = Wk2.項目A AND テーブル1.項目B = Wk2.項目B <PARTITION BYにて取得> UPDATE テーブル1 SET 項目C = '1' FROM (SELECT * FROM (SELECT ROW_NUMBER() OVER( PARTITION BY 項目A ORDER BY 項目B DESC) AS RowNo ,項目A ,項目B FROM テーブル1 ) As Wk2 WHERE Wk2.RowNo=1 ) As Wk WHERE テーブル1.項目A = Wk.項目A AND テーブル1.項目B = Wk.項目B 見にくくなって申し訳ありませんが、よろしくお願いいたします。 |
|
投稿日時: 2008-12-03 12:55
実行計画を確認してください。
あと、会議室が違います。 |
|
投稿日時: 2008-12-03 13:10
よっしー様
大変失礼しました。 Database Expertにて出直してきます。 |
1