0
A
答えて
0
これは使用できます。
DECLARE @columns NVARCHAR(MAX), @sql NVARCHAR(MAX);
SET @columns = N'';
SELECT @columns += N', ' + QUOTENAME(Process)
FROM
(
SELECT DISTINCT Process FROM SAMPLE_TABLE
) AS x;
SET @sql = N'SELECT [Date],'
+ STUFF(@columns, 1, 2, '')
+ 'FROM
(
SELECT [Date], Qty,Process FROM SAMPLE_TABLE
) AS j PIVOT
(
SUM(Qty) FOR Process IN ('
+ STUFF(REPLACE(@columns, ', [', ',['), 1, 1, '')
+ ')
) AS p ORDER BY p.[Date];';
EXEC sp_executesql @sql;
0
それは常にこれらの4つのオプションだ場合...条件付き集計
select Date,
sum(case when Process = 'DESIGN' then Qty else 0 end) as DESIGN,
sum(case when Process = 'CODING' then Qty else 0 end) as CODING,
sum(case when Process = 'TESTING' then Qty else 0 end) as TESTING,
sum(case when Process = 'DATABASE' then Qty else 0 end) as [DATABASE]
from MyTable
group by Date
0
を使用して私たちは、動的SQLに
IF OBJECT_ID('Tempdb..#Temp') IS NOt NUll
Drop Table #Temp
;With cte (Developer, Process ,Qty, Date)
AS
(
SELECT 'XYZ','Design', 10 ,'26/06/2017' Union all
SELECT 'XYZ','Codein', 20 ,'26/06/2017' Union all
SELECT 'XYZ','Testin', 30 ,'26/06/2017' Union all
SELECT 'XYZ','Databa', 40 ,'26/06/2017' Union all
SELECT 'ABC','Design', 10 ,'26/06/2017' Union all
SELECT 'ABC','Codein', 20 ,'26/06/2017' Union all
SELECT 'ABC','Testin', 30 ,'26/06/2017' Union all
SELECT 'ABC','Databa', 40 ,'27/06/2017' Union all
SELECT 'XYZ','Design', 50 ,'27/06/2017' Union all
SELECT 'XYZ','Codein', 60 ,'27/06/2017' Union all
SELECT 'XYZ','Testin', 70 ,'27/06/2017' Union all
SELECT 'XYZ','Databa', 80 ,'27/06/2017' Union all
SELECT 'ABC','Design', 50 ,'27/06/2017' Union all
SELECT 'ABC','Codein', 60 ,'27/06/2017' Union all
SELECT 'ABC','Testin', 70 ,'27/06/2017' Union all
SELECT 'ABC','Databa', 80 ,'27/06/2017'
)
SELECT * INTO #Temp FROM cte
--Above i have created sample data for getting result
DECLARE @dynamicCol nvarchar(max),
@Sql nvarchar(max),
@dynamicCol2 nvarchar(max),
@dynamicCol3 nvarchar(max)
SELECT @dynamicCol=STUFF((SELECT DISTINCT ', ' + 'ISNULL('+Process +',''0'') AS '+ Process FROM #Temp
FOR XML PATH('')),1,1,'')
SELECT @dynamicCol2=STUFF((SELECT DISTINCT ', ' + Process FROM #Temp
FOR XML PATH('')),1,1,'')
SELECT @dynamicCol3=STUFF((SELECT DISTINCT ', ' + 'SUM('+Process +') OVER(Partition by [Date]) AS '+ Process FROM #Temp
FOR XML PATH('')),1,1,'')
SET @Sql='SELECT DISTINCT [Date],'[email protected]+' FROM
(
SELECT [Date] , '+ @dynamicCol +' From
(
SELECT * From
#temp
)AS Src
PIVOT
(
MAX([Qty]) For [Process ] IN ('[email protected]+')
)
AS Pvt
)DT
'
PRINT @Sql
EXEC(@Sql)
0
を使用することによって、所望の結果を得ることができるピボットを気にしないでください特定のピボットと結果ビューを言及したくないが、以下のデータよりもデータが必要な場合
select Date1,cast(Process as varchar(200)) Status,sum(Qty) as Count from #temp group by Date1,Process
関連する問題
- 1. SQL Server - ピボットのピボット
- 2. 集計のないSQL Server 2008ピボット
- 3. データ集計を使用したSQL Serverの転置(ピボット)テーブル
- 4. グループごとの縦の合計ピボットSQL
- 5. SQL Serverのピボット2014
- 6. SQL Serverのピボットは
- 7. SQL Serverの - 合計
- 8. 合計の合計SQL Server 2014
- 9. SQLクロス集計、ピボット
- 10. SQL ServerのピボットのNull?
- 11. SQL Serverのテーブル移調/ピボット
- 12. SQL Serverのピボットとソート
- 13. SQL Serverの合計ケース
- 14. 集計なしのSQLピボット
- 15. SQL Server:ピボットとグループ化
- 16. は、動的ピボットSQL Serverクエリ
- 17. 合計SQL Serverがクエリ
- 18. SQL Server 2005を使用したSQLピボット
- 19. SQL Serverビュー4つのテーブルからのデータの結合/計算
- 20. SQL Serverの時刻データ型を使用した動的ピボット
- 21. SQL Serverの行のデータを合計する方法は?
- 22. SQL Server 2005レポートサービスマトリックス合計データの強調表示
- 23. 前年度データの累積合計を保持する - SQL Server
- 24. SQL Serverの - 動的ピボット既存のテーブル
- 25. ピボット行のSQL Serverの列に2014
- 26. SQL Serverのピボットまたはアンピボット
- 27. ピボットとSQL Serverの問題点
- 28. SQL Server:複数の列をピボット
- 29. SQL Server:複数の列にピボットする
- 30. SQL Serverピボット注文の問題
データとコードを、(リンク先の)イメージではなく、書式付きテキストとして表示してください。何か試しましたか? – HoneyBadger
はい。私はピボットを試していますが、正しいデータではありません。 –
@KETULSONI - これまでに試したコードを投稿してください –