As Mentioned in Image, Here, dates are dynamic, based on Order Date, 10/25,10/26,10/27,10/28 etc..To achieve the same with Dynamic columns please find query for the same:
CREATE TABLE #TestTable(ctrl_no INT, id int, Amount NUMERIC(18,2), OrderDate DATE) INSERT INTO #TestTable(ctrl_no , id , Amount , OrderDate ) SELECT 1000029,100016,990.0000,'10/25/2012' UNION ALL SELECT 1000029,100018,990.0000,'10/25/2012' UNION ALL SELECT 1000029,100016,660.0000,'10/26/2012' UNION ALL SELECT 1000029,100018,660.0000,'10/26/2012' UNION ALL SELECT 1000029,206007,660.0000,'10/26/2012' UNION ALL SELECT 1000029,206007,660.0000,'10/27/2012' DECLARE @MinDate DATE ,@MaxDate DATE DECLARE @Dates VARCHAR(MAX) SELECT @Dates = '' SELECT @MinDate = MIN(OrderDate) ,@MaxDate = MAX(OrderDate) FROM #TestTable WHILE @MinDate <= @MaxDate BEGIN SELECT @Dates = @Dates + '[' + CONVERT(VARCHAR(10), @MinDate, 101) + '],' SELECT @MinDate = DATEADD(d, 1, @MinDate) END SELECT @Dates = LEFT(@Dates, LEN(@Dates) - 1) DECLARE @qry NVARCHAR(MAX) SELECT @qry = N' SELECT id, ' + @Dates + ' FROM ( SELECT id, ISNULL(Amount,0) AS Amount, OrderDate FROM #TestTable t ) x PIVOT( SUM(Amount) FOR OrderDate IN(' + @Dates + ') ) p ' EXEC (@qry) DROP TABLE #TestTable
Let me know if you have any question/comment.
Microsoft Certified Professional Expert. I have 14+ years of experience in Design and Develop 100+ .Net applications using Asp.Net, C#, Asp.Net Core, VB.Net, SQL Server, MVC, AngularJS, JavaScript, Azure, HTML5 and CSS3.
Posted by Tejas Shah on November 22, 2017
Posted by Tejas Shah on November 11, 2017
Posted by Tejas Shah on August 12, 2015
Posted by Tejas Shah on June 26, 2015
Posted by Tejas Shah on April 20, 2015