1

PIVOTMS 試験 70-461 : Querying MS SQL Server 2012 の準備キットを読んでいて、著者がオペレーターについて語っています。AdventureWorks サンプル データベースを使用してテストを行っています。

簡単なテストを行い、性別 (M、F) ごとに分割された列で部門ごとの平均基本料金を表示できるかどうかを確認することにしました。

私は次のものを持っています:

WITH CTE AS
(
    SELECT 
        [DepartmentName], 
        [Gender], 
        [BaseRate] 
    FROM 
        [AdventureWorks].[dbo].[DimEmployee]
)

SELECT
    [DepartmentName], [M], [F]
FROM 
    [AdventureWorks].[dbo].[DimEmployee] PIVOT (Avg(BaseRate) FOR [Gender] IN ([M], [F])) AS P

しかし、私はこれに気づきました:

オペレーター[DepartmentName]で指定されていない唯一のフィールドであるため、(本によると)あるべきグループはありません。PIVOT

単純な GROUP BY 句を追加できますが、これが適切な結果をもたらすかどうかはわかりません。これは、PIVOT の使用法を正しく理解していなかったことも意味します。

私が間違っている場所はありますか?

4

2 に答える 2

2

CTE を定義しますが、それを無視してベース テーブルから選択します。

そのはず

WITH CTE
     AS (SELECT [DepartmentName],
                [Gender],
                [BaseRate]
         FROM   [AdventureWorks].[dbo].[DimEmployee])
SELECT [DepartmentName],
       [M],
       [F]
FROM   CTE PIVOT (Avg(BaseRate) FOR [Gender] IN ([M], [F])) AS P 
于 2013-06-26T07:19:51.010 に答える
0

どうですか:

SELECT
[DepartmentName], [Gender], [BaseRate]
FROM 
[AdventureWorks].[dbo].[DimEmployee] PIVOT (Avg(BaseRate) FOR [Gender] IN ([M], [F])) AS P
于 2013-06-26T04:33:20.360 に答える