Why yes, yes there is. Here is a script that I prepared many years ago for a similar problem that was ultimately resolved by providing the Excel user and erasing his hands. I apologize that it is not configured with your example data, but hopefully is easy to follow.
Hope this helps,
John
CREATE TABLE
(
ProviderID INT,
Total INT,
PaymentDate SMALLDATETIME
)
SET DATEFORMAT dmy
INSERT INTO
INSERT INTO
INSERT INTO
INSERT INTO
INSERT INTO
INSERT INTO
INSERT INTO
INSERT INTO
SELECT *
FROM
DECLARE @pvtColumns VARCHAR(MAX)
SET @pvtColumns = ''
SELECT TOP 1023 @pvtColumns = @pvtColumns + '[' + CONVERT(VARCHAR, PaymentDate, 103) + '], '
FROM (SELECT DISTINCT PaymentDate FROM
DECLARE @myQuery VARCHAR(MAX)
SET @myQuery = '
SELECT ProviderID, ' + LEFT(@pvtColumns, LEN(@pvtColumns) - 1) + '
FROM (SELECT ProviderID, PaymentDate, Total
FROM #glbTestTable) AS SourceTable
PIVOT
(
SUM(Total)
FOR PaymentDate IN (' + LEFT(@pvtColumns, LEN(@pvtColumns) - 1) + ')
) AS PivotTable'
EXEC(@myQuery)
DROP TABLE
source
share