@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

【SQLServer】 GROUP BYについて

1
投稿者投稿内容
アンクリ
会議室デビュー日: 2008/09/03
投稿数: 11
投稿日時: 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

見にくくなって申し訳ありませんが、よろしくお願いいたします。
よっしー
大ベテラン
会議室デビュー日: 2007/05/17
投稿数: 143
投稿日時: 2008-12-03 12:55
実行計画を確認してください。
あと、会議室が違います。
アンクリ
会議室デビュー日: 2008/09/03
投稿数: 11
投稿日時: 2008-12-03 13:10
よっしー様
 大変失礼しました。
 Database Expertにて出直してきます。
1

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