Quantcast
Channel: SQL Server Reporting Services
Viewing all articles
Browse latest Browse all 1418

How can I use Number as field name in reporting services?

$
0
0

Greetings experts,

I used Common Table Expressions to write a pivot table so I can dynamically capture current year in displaying results.

For instance, each of our members is required to pay annual dues each year.

So, to display current dues year, we use something like this:

Member Name, Date Registered, Amount Owed, Amount Paid, Remaining Balance   2019   2020     2021.

Jane Doe     07/01/2019        120.00       70.00        50.00              50.00  0.00     0.00

This works just fine.

Where we are running into trouble is when we use reporting services (using visual studio report viewer) to display this results.

I am getting error that the years (2019, 2020, 2021) are not valid field names.

I even tried using [] as in [2019]… but still no love.

Any work around to this?

Any assistance is greatly appreciated.

USE [myDB]
GO
/****** Object:  StoredProcedure [dbo].[uspGetPivotedData]  
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('MemberHistory', 'U') IS NOT NULL 
 DROP TABLE MemberHistory;
 GO
ALTER PROCEDURE [dbo].[uspGetPivotedData]
AS

DECLARE @cols AS NVARCHAR(MAX), @query  AS NVARCHAR(MAX);

SET @cols = STUFF((SELECT DISTINCT ',' + QUOTENAME(YEAR(t.EventYear))
            FROM Transactions t
            FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,'');
set @query = N'WITH CTE AS
(
    SELECT
        t.TransactionID, 
        m.memberName,
        m.date_registered, 
        envelopeNumber,
        registrationFee,
		Amount,
        YEAR(eventyear) eventyear,
        CONVERT(varchar, CAST(t.AmountPaid AS money), 1) AS AmountPaid,
		t.Balance 
    FROM
        dbo.Transactions AS t 
        INNER JOIN dbo.Members AS m 
        ON t .MemberID = m.MemberID 
        INNER JOIN dbo.PaymentTypes AS p 
        ON t .TypeID = p.PaymentTypeID
)

SELECT
    TransactionID,
    memberName,
    date_registered, 
    envelopeNumber,
    CONVERT(varchar, CAST(registrationFee AS money), 1) AS registrationFee,
	Amount,
' + @cols + N',
    CONVERT(varchar, CAST(Balance AS money), 1) AS Balance
	INTO MemberHistory
FROM
    CTE
PIVOT
    (
        MAX(AmountPaid)
        FOR eventyear IN (' + @cols + N')
    ) p 
ORDER BY 
    TransactionID';
EXECUTE sp_executesql @query;EXECUTE sp_executesql @query;

Many thanks in advance


Viewing all articles
Browse latest Browse all 1418

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>