この問題を解決したいのですが、誰かに解決を手伝ってもらいたいです。プログラムコードで問題を解決する方が簡単だと思っていましたが、その考えを変え始めています。
PIVOTステートメントからプル データを使用する SQL クエリとSELECT、フィールドの 1 つは、[Cat_Entries]セル ラベルとして使用されるハード コードされた値です。Cat_Entries の値は、COUNT(EventGUID)および/またはCAST(SUM(Duration) AS varchar(10)) AS TotalRepairTime同じ文で計算されます。
以下のステートメントから、出力を生成するために 3 つのクエリのいずれかが使用されてSELECTいることがわかります。UNIONただし、「サブクエリ」が計算の結果として値を返さない場合。ただし、要件は  [Cat_Entries]、値に関係なくラベルを表示することです。
データは次のようになります。
Cat     Cat Entries           6/1/2012  7/1/2012  8/1/2012  9/1/2012
------  --------------------  --------  --------  --------  --------
00000A  Critical Down Time       1       
00000A  Critical Outage          1       
00000A  Total Repair Time        65         
00000B  Critical Down Time                                     6
00000B  Total Repair Time                                      90
00000C  Critical Down Time       1          5    
00000C  Critical Outage          1          5    
00000C  Total Repair Time        30         240    
00000D  Critical Down Time                                     2     
00000E  Critical Down Time                          1    
00000G  Critical Down Time                                     1    
00000M  Critical Down Time        1                            3    
00000M  Critical Outage           1                 3    
00000M  Total Repair Time         60                180   
...そして、これは目的の出力がどのように見えるかです (** 挿入された空の行を示します):
    Cat     Cat Entrie s          6/1/2012  7/1/2012  8/1/2012  9/1/2012
    ------  --------------------  --------  --------  --------  --------
    00000A  Critical Down Time       1       
    00000A  Critical Outage          1       
    00000A  Total Repair Time        65         
    00000B  Critical Down Time                                     6
**  00000B  Critical Outage          
    00000B  Total Repair Time                                      90
    00000C  Critical Down Time       1          5    
    00000C  Critical Outage          1          5    
    00000C  Total Repair Time        30         240 
    00000D  Critical Down Time                                     2   
**  00000D  Critical Outage          
**  00000D  Total Repair Time 
これがsprocPIVOTです:
SELECT @cols = STUFF(( SELECT DISTINCT TOP 100 PERCENT '],[' + cast([Year] as varchar(4))
FROM  vCatCountByMonthYear  where SiteGUID = @SiteGuid 
and [Year] BETWEEN @StartDate AND @StopDate ORDER BY '],[' + cast([Year] as varchar(4)) 
FOR XML PATH('') ), 1, 2, '') + ']' 
SET @query = N'SELECT Cat,[Cat_Entries], ' + @cols +' FROM (SELECT Cat,[Year],
[Cat_Entries],Value,OrderBy FROM vCatCountByMonthYear 
where SiteGUID = ' + CHAR(39) + CONVERT(nvarchar(36), @SiteGuid) + CHAR(39) + ' and 
[Year] BETWEEN ' + CHAR(39) + @StartDate + CHAR(39) + ' AND ' + CHAR(39) + 
@StopDate + CHAR(39) + ' ) p PIVOT ( Sum ([Value] ) FOR [Year] IN ( '+ @cols +' ) ) 
AS pvt ORDER BY Cat,OrderBy' 
execute(@query)
... VIEWsproc が使用するのは次のとおりです。
SELECT SiteGUID, Cat_Entries, EntriesCount AS Value, 
       CONVERT(date, CAST(Month AS varchar(2)) + '-1-' + CAST(Year AS varchar(4))) AS MonthYear, 
       Month, Year, OrderBy, Cat, EventId
FROM (SELECT SiteGUID, 'Critical Down Time' AS Cat_Entries, COUNT(EventGUID) AS EntriesCount,
             Month, Year, 1 AS OrderBy, Cat, EventId
FROM dbo.vCatCountTotalEntries
GROUP BY SiteGUID, Month, Year, Cat, EventId
UNION
      SELECT SiteGUID, 'Critical Outage' AS Cat_Entries, COUNT(EventGUID) AS EntriesCount,
             Month, Year, 2 AS OrderBy, Cat, EventId
      FROM   dbo.vCatCountEqpEntries
      GROUP BY SiteGUID, Cat, Month, Year, Cat, EventId
UNION
      SELECT SiteGUID, 'Total Repair Time' AS Cat_Entries, 
             CAST(SUM(Duration) AS varchar(10)) AS TotalRepairTime, Month, Year, 3 AS OrderBy,
             Cat, EventId
      FROM   dbo.vCatCountOnEqpRprTm
      GROUP BY SiteGUID, Cat, Month, Year, Cat, EventId) AS W
いつものように、あなたの時間と努力に感謝します! R.