次のselectステートメントがあるとします。
Select t.name, SUM(st.row_count) as row_count
From sys.dm_db_partition_stats st
join sys.tables t on t.object_id = st.object_id
join ClientUpdateConfig c on t.name = c.TableName
Where (index_id < 2) and schema_id = schema_id('dbo')
and t.type ='U'
group by t.name
また、追加フィールドとしてc.RowIDを選択したいと思います。クエリはそのまま機能しますが、1のように変更した場合:
Select t.name, SUM(st.row_count) as row_count, c.RowID as current_row
エラーが発生します:
メッセージ8120、レベル16、状態1、行1の列'ClientUpdateConfig.RowID'は、集計関数またはGROUP BY句のいずれにも含まれていないため、選択リストでは無効です。
集計関数(SUMを想定しています)またはgroup byでselect値が必要な理由を誰かが説明できますか?私はこの制限を理解していません-なぜこれが起こっているのか理解できれば、クエリのデザインを調整できるかもしれません。