简体   繁体   中英

Limiting a query by MTD, Prior month, etc. to SSRS

I am trying to form a report out of the following query, and the issue I am having is: how do I get it to make a structure where I can call it in SSRS, say calling MTF, PMonth, PPMonth as a "Type" choice, when I put it into SSRS, I want MTD, PMonth and PPMonth to appear in the report as separate entities.

-- ResWare.dbo.rptClosingPipeline3
SET NOCOUNT ON

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

DECLARE @today varchar(20)
SET     @today = Convert(varchar, GetDate(), 101)

DECLARE @startdate  datetime
SET @startdate = dbo.GetUTCDateTimeFunc(DateAdd(m, 0, convert(datetime, convert(char(8), current_timestamp, 112)) - day(current_timestamp) + 1))--

DECLARE @enddate    datetime  --today at midnight.  first moment of the day
SET @enddate = dbo.GetUTCDateTimeFunc(@today)--

DECLARE @MTD    datetime
SET @MTD = dbo.GetUTCDateTimeFunc(DateAdd(m, 0, convert(datetime, convert(char(8), current_timestamp, 112)) - day(current_timestamp) + 1))--

DECLARE @PMonth datetime
SET @PMonth = dbo.GetUTCDateTimeFunc(DateAdd(m, -1, convert(datetime, convert(char(8), current_timestamp, 112)) - day(current_timestamp) + 1))
DECLARE @PMonthEnd  datetime
SET @PMonthEnd = dbo.GetUTCDateTimeFunc(DateAdd(m, 0, convert(datetime, convert(char(8), current_timestamp, 112)) - day(current_timestamp) + 1))--

DECLARE @PPMonth    datetime
SET @PPMonth = dbo.GetUTCDateTimeFunc(DateAdd(m, -2, convert(datetime, convert(char(8), current_timestamp, 112)) - day(current_timestamp) + 1))
DECLARE @PPMonthEnd datetime
SET @PPMonthEnd = dbo.GetUTCDateTimeFunc(DateAdd(m, -1, convert(datetime, convert(char(8), current_timestamp, 112)) - day(current_timestamp) + 1))--


SELECT  FM.FileNumber AS FileNumber,
        ISNULL(IU.TEAMNAME,'') AS Closer,
        dbo.GetLocalDateTimeFunc(FM.ActualSettlementDate) AS Scheduled,
        dbo.GetLocalDateTimeFunc(FM.DisbursementDate) AS DisbursementDate,
        dbo.GetLocalDateTimeFunc(FM.EstSettlementDate) AS EstSettlementDate,
        CASE WHEN EXISTS (SELECT * FROM FilePartnerRel FPR1
        WHERE FPR1.PartnerTypeID = 10033 AND FPR1.FileID = FM.FileID)
        THEN P.State+'-(W)'
        ELSE P.State END AS State,
        ISNULL(P.StreetNumber,'')+' '+ISNULL(P.StreetDirection,'')+' '+ISNULL(P.StreetName,'')+' '+ISNULL(P.Unit,'')AS PropertyAddress,
        S.Name,
        (SELECT CONVERT(varchar(7000),Body) FROM Note WHERE NoteID = 
        (Select MAX(N.NoteID)
         FROM Note N
         JOIN FileActions A1 ON A1.FileID=FM.FileID 
         AND A1.ActionDefID IN (141,386,306)
        JOIN FileActionNoteRel AN ON AN.FileActionsID=A1.FileActionsID
         AND N.NoteID = AN.NoteID)) AS Note,
         (SELECT COUNT(DISTINCT FA1.FileID) FROM FileActions FA1
         JOIN FileMain FM1 ON FM1.FileID = FA1.FileID
              AND FM1.FileNumber NOT LIKE 'PA-%'
        JOIN    Coordinator C1 ON C1.FileID = FA1.FileID
        AND C1.CoordinatorTypeID IN (2, 6)
        AND C1.CoordinatorID = C.CoordinatorID
        WHERE FA1.ActionDefID IN (61,315,393)
        AND FA1.ReceivedDate >= @startdate
        AND FM1.StatusID != 8),
         (SELECT COUNT(DISTINCT FA1.FileID) FROM FileActions FA1
         JOIN FileMain FM1 ON FM1.FileID = FA1.FileID
              AND FM1.FileNumber NOT LIKE 'PA-%'
        WHERE FA1.ActionDefID IN (61,315,393)
        AND FA1.ReceivedDate >= @startdate 
        AND FM1.StatusID != 8) AS TotalDisb
        , TRT.Name CurativeItem
        , SD.CommitmentEffDate
FROM        FileMain FM
JOIN        ActionListTransactionType ALTT ON ALTT.ActionListTransactionTypeID = FM.ActionListTransactionTypeID
JOIN        ActionListProductType ALPT ON ALPT.ActionListProductTypeID = FM.ActionListProductTypeID
JOIN        Coordinator C ON C.FileID = FM.FileID
            AND C.CoordinatorTypeID IN (2)
LEFT JOIN   FilePartnerRel FPR ON FPR.FileID = FM.FileID
            AND FPR.PartnerTypeID = 5
JOIN        Property P ON P.FileID = FM.FileID
LEFT JOIN   PartnerCompany PC ON PC.PartnerCompanyID = FPR.PartnerCompanyID
JOIN        PartnerCompany PC1 ON PC1.PartnerCompanyID = FM.ClientID
JOIN        TEAM IU ON IU.TEAMID = C.CoordinatorID
JOIN        Status S ON S.StatusID = FM.StatusID
LEFT JOIN   TitleReview TR ON TR.FileID = Fm.FileID
            AND (TR.InternalClear IS NULL OR TR.InternalClear = 0)
LEFT JOIN   TitleReviewType TRT ON TRT.TitleReviewTypeID = TR.TitleReviewTypeID
LEFT JOIN   SearchData SD ON SD.FileID = FM.FileID

WHERE   FM.OfficeID = 1
        AND FM.FileNumber NOT LIKE 'PA-%'
        AND FM.StatusID IN (2,4,5,10,11,14,15,18) 

UNION ALL

SELECT  FM.FileNumber AS FileNumber,
        ISNULL(IU.TEAMNAME,'') AS Closer,
        dbo.GetLocalDateTimeFunc(FM.ActualSettlementDate) AS Scheduled,
        dbo.GetLocalDateTimeFunc(FM.DisbursementDate) AS DisbursementDate,
        dbo.GetLocalDateTimeFunc(FM.EstSettlementDate) AS EstSettlementDate,
        CASE WHEN EXISTS (SELECT * FROM FilePartnerRel FPR1
        WHERE FPR1.PartnerTypeID = 10033 AND FPR1.FileID = FM.FileID)
        THEN P.State+'-(W)'
        ELSE P.State END AS State,
        ISNULL(P.StreetNumber,'')+' '+ISNULL(P.StreetDirection,'')+' '+ISNULL(P.StreetName,'')+' '+ISNULL(P.Unit,'')AS PropertyAddress,
        S.Name,
        (SELECT CONVERT(varchar(7000),Body) FROM Note WHERE NoteID = 
        (Select MAX(N.NoteID)
         FROM Note N
         JOIN FileActions A1 ON A1.FileID=FM.FileID 
         AND A1.ActionDefID IN (141,386,306)
        JOIN FileActionNoteRel AN ON AN.FileActionsID=A1.FileActionsID
         AND N.NoteID = AN.NoteID)) AS Note,
         (SELECT COUNT(DISTINCT FA1.FileID) FROM FileActions FA1
         JOIN FileMain FM1 ON FM1.FileID = FA1.FileID
              AND FM1.FileNumber NOT LIKE 'PA-%'
        JOIN    Coordinator C1 ON C1.FileID = FA1.FileID
        AND C1.CoordinatorTypeID IN (2, 6)
        AND C1.CoordinatorID = C.CoordinatorID
        WHERE FA1.ActionDefID IN (61,315,393)
        AND FA1.ReceivedDate >= @MTD
        AND FM1.StatusID != 8),
         (SELECT COUNT(DISTINCT FA1.FileID) FROM FileActions FA1
         JOIN FileMain FM1 ON FM1.FileID = FA1.FileID
              AND FM1.FileNumber NOT LIKE 'PA-%'
        WHERE FA1.ActionDefID IN (61,315,393)
        AND FA1.ReceivedDate >= @MTD 
        AND FM1.StatusID != 8) AS TotalDisb
        , TRT.Name CurativeItem
        , SD.CommitmentEffDate
FROM        FileMain FM
JOIN        ActionListTransactionType ALTT ON ALTT.ActionListTransactionTypeID = FM.ActionListTransactionTypeID
JOIN        ActionListProductType ALPT ON ALPT.ActionListProductTypeID = FM.ActionListProductTypeID
JOIN        Coordinator C ON C.FileID = FM.FileID
            AND C.CoordinatorTypeID IN (2)
LEFT JOIN   FilePartnerRel FPR ON FPR.FileID = FM.FileID
            AND FPR.PartnerTypeID = 5
JOIN        Property P ON P.FileID = FM.FileID
LEFT JOIN   PartnerCompany PC ON PC.PartnerCompanyID = FPR.PartnerCompanyID
JOIN        PartnerCompany PC1 ON PC1.PartnerCompanyID = FM.ClientID
JOIN        TEAM IU ON IU.TEAMID = C.CoordinatorID
JOIN        Status S ON S.StatusID = FM.StatusID
LEFT JOIN   TitleReview TR ON TR.FileID = Fm.FileID
            AND (TR.InternalClear IS NULL OR TR.InternalClear = 0)
LEFT JOIN   TitleReviewType TRT ON TRT.TitleReviewTypeID = TR.TitleReviewTypeID
LEFT JOIN   SearchData SD ON SD.FileID = FM.FileID

WHERE   FM.OfficeID = 1
        AND FM.FileNumber NOT LIKE 'PA-%'
        AND FM.StatusID IN (2,4,5,10,11,14,15,18) 

UNION ALL

SELECT  FM.FileNumber AS FileNumber,
        ISNULL(IU.TEAMNAME,'') AS Closer,
        dbo.GetLocalDateTimeFunc(FM.ActualSettlementDate) AS Scheduled,
        dbo.GetLocalDateTimeFunc(FM.DisbursementDate) AS DisbursementDate,
        dbo.GetLocalDateTimeFunc(FM.EstSettlementDate) AS EstSettlementDate,
        CASE WHEN EXISTS (SELECT * FROM FilePartnerRel FPR1
        WHERE FPR1.PartnerTypeID = 10033 AND FPR1.FileID = FM.FileID)
        THEN P.State+'-(W)'
        ELSE P.State END AS State,
        ISNULL(P.StreetNumber,'')+' '+ISNULL(P.StreetDirection,'')+' '+ISNULL(P.StreetName,'')+' '+ISNULL(P.Unit,'')AS PropertyAddress,
        S.Name,
        (SELECT CONVERT(varchar(7000),Body) FROM Note WHERE NoteID = 
        (Select MAX(N.NoteID)
         FROM Note N
         JOIN FileActions A1 ON A1.FileID=FM.FileID 
         AND A1.ActionDefID IN (141,386,306)
        JOIN FileActionNoteRel AN ON AN.FileActionsID=A1.FileActionsID
         AND N.NoteID = AN.NoteID)) AS Note,
         (SELECT COUNT(DISTINCT FA1.FileID) FROM FileActions FA1
         JOIN FileMain FM1 ON FM1.FileID = FA1.FileID
              AND FM1.FileNumber NOT LIKE 'PA-%'
        JOIN    Coordinator C1 ON C1.FileID = FA1.FileID
        AND C1.CoordinatorTypeID IN (2, 6)
        AND C1.CoordinatorID = C.CoordinatorID
        WHERE FA1.ActionDefID IN (61,315,393)
        AND FA1.ReceivedDate >= @PMonth
        AND FM1.StatusID != 8),
         (SELECT COUNT(DISTINCT FA1.FileID) FROM FileActions FA1
         JOIN FileMain FM1 ON FM1.FileID = FA1.FileID
              AND FM1.FileNumber NOT LIKE 'PA-%'
        WHERE FA1.ActionDefID IN (61,315,393)
        AND FA1.ReceivedDate >= @PMonth 
        AND FM1.StatusID != 8) AS TotalDisb
        , TRT.Name CurativeItem
        , SD.CommitmentEffDate
FROM        FileMain FM
JOIN        ActionListTransactionType ALTT ON ALTT.ActionListTransactionTypeID = FM.ActionListTransactionTypeID
JOIN        ActionListProductType ALPT ON ALPT.ActionListProductTypeID = FM.ActionListProductTypeID
JOIN        Coordinator C ON C.FileID = FM.FileID
            AND C.CoordinatorTypeID IN (2)
LEFT JOIN   FilePartnerRel FPR ON FPR.FileID = FM.FileID
            AND FPR.PartnerTypeID = 5
JOIN        Property P ON P.FileID = FM.FileID
LEFT JOIN   PartnerCompany PC ON PC.PartnerCompanyID = FPR.PartnerCompanyID
JOIN        PartnerCompany PC1 ON PC1.PartnerCompanyID = FM.ClientID
JOIN        TEAM IU ON IU.TEAMID = C.CoordinatorID
JOIN        Status S ON S.StatusID = FM.StatusID
LEFT JOIN   TitleReview TR ON TR.FileID = Fm.FileID
            AND (TR.InternalClear IS NULL OR TR.InternalClear = 0)
LEFT JOIN   TitleReviewType TRT ON TRT.TitleReviewTypeID = TR.TitleReviewTypeID
LEFT JOIN   SearchData SD ON SD.FileID = FM.FileID

WHERE   FM.OfficeID = 1
        AND FM.FileNumber NOT LIKE 'PA-%'
        AND FM.StatusID IN (2,4,5,10,11,14,15,18) 

UNION ALL

SELECT  FM.FileNumber AS FileNumber,
        ISNULL(IU.TEAMNAME,'') AS Closer,
        dbo.GetLocalDateTimeFunc(FM.ActualSettlementDate) AS Scheduled,
        dbo.GetLocalDateTimeFunc(FM.DisbursementDate) AS DisbursementDate,
        dbo.GetLocalDateTimeFunc(FM.EstSettlementDate) AS EstSettlementDate,
        CASE WHEN EXISTS (SELECT * FROM FilePartnerRel FPR1
        WHERE FPR1.PartnerTypeID = 10033 AND FPR1.FileID = FM.FileID)
        THEN P.State+'-(W)'
        ELSE P.State END AS State,
        ISNULL(P.StreetNumber,'')+' '+ISNULL(P.StreetDirection,'')+' '+ISNULL(P.StreetName,'')+' '+ISNULL(P.Unit,'')AS PropertyAddress,
        S.Name,
        (SELECT CONVERT(varchar(7000),Body) FROM Note WHERE NoteID = 
        (Select MAX(N.NoteID)
         FROM Note N
         JOIN FileActions A1 ON A1.FileID=FM.FileID 
         AND A1.ActionDefID IN (141,386,306)
        JOIN FileActionNoteRel AN ON AN.FileActionsID=A1.FileActionsID
         AND N.NoteID = AN.NoteID)) AS Note,
         (SELECT COUNT(DISTINCT FA1.FileID) FROM FileActions FA1
         JOIN FileMain FM1 ON FM1.FileID = FA1.FileID
              AND FM1.FileNumber NOT LIKE 'PA-%'
        JOIN    Coordinator C1 ON C1.FileID = FA1.FileID
        AND C1.CoordinatorTypeID IN (2, 6)
        AND C1.CoordinatorID = C.CoordinatorID
        WHERE FA1.ActionDefID IN (61,315,393)
        AND FA1.ReceivedDate >= @PPMonth
        AND FM1.StatusID != 8),
         (SELECT COUNT(DISTINCT FA1.FileID) FROM FileActions FA1
         JOIN FileMain FM1 ON FM1.FileID = FA1.FileID
              AND FM1.FileNumber NOT LIKE 'PA-%'
        WHERE FA1.ActionDefID IN (61,315,393)
        AND FA1.ReceivedDate >= @PPMonth 
        AND FM1.StatusID != 8) AS TotalDisb
        , TRT.Name CurativeItem
        , SD.CommitmentEffDate
FROM        FileMain FM
JOIN        ActionListTransactionType ALTT ON ALTT.ActionListTransactionTypeID = FM.ActionListTransactionTypeID
JOIN        ActionListProductType ALPT ON ALPT.ActionListProductTypeID = FM.ActionListProductTypeID
JOIN        Coordinator C ON C.FileID = FM.FileID
            AND C.CoordinatorTypeID IN (2)
LEFT JOIN   FilePartnerRel FPR ON FPR.FileID = FM.FileID
            AND FPR.PartnerTypeID = 5
JOIN        Property P ON P.FileID = FM.FileID
LEFT JOIN   PartnerCompany PC ON PC.PartnerCompanyID = FPR.PartnerCompanyID
JOIN        PartnerCompany PC1 ON PC1.PartnerCompanyID = FM.ClientID
JOIN        TEAM IU ON IU.TEAMID = C.CoordinatorID
JOIN        Status S ON S.StatusID = FM.StatusID
LEFT JOIN   TitleReview TR ON TR.FileID = Fm.FileID
            AND (TR.InternalClear IS NULL OR TR.InternalClear = 0)
LEFT JOIN   TitleReviewType TRT ON TRT.TitleReviewTypeID = TR.TitleReviewTypeID
LEFT JOIN   SearchData SD ON SD.FileID = FM.FileID

WHERE   FM.OfficeID = 1
        AND FM.FileNumber NOT LIKE 'PA-%'
        AND FM.StatusID IN (2,4,5,10,11,14,15,18) 


GROUP BY        FM.FileNumber,
        PC1.Name,
        PC.Name,
        ISNULL(IU.TEAMNAME,''),
        ALTT.Name +': '+ALPT.DisplayName,
        dbo.GetLocalDateTimeFunc(FM.ActualSettlementDate),
        dbo.GetLocalDateTimeFunc(FM.DisbursementDate),
        dbo.GetLocalDateTimeFunc(FM.EstSettlementDate),
        FM.FileID,
        P.State,
        P.StreetNumber,
        P.StreetDirection,
        P.StreetName,
        P.Unit,
        S.Name,
        FM.EstSettlementDate,
        C.CoordinatorID,
        TRT.Name,
        SD.CommitmentEffDate

Option 1:

Add a hard-coded column to your query as follows:

SELECT ...
, 'StartDt' as Period
From QUERY1
UNION ALL
SELECT ...
, 'MTD' as Period
FROM QUERY2
UNION ALL
SELECT ...
, 'Pmonth' as Period
FROM QUERY3

Then I would add a report parameter "@filter" (or whatever name you like) with the 'StartDt', 'MTD', 'Pmonth', etc. as its available values. Enable multiple values and ensure it is a text parameter.

Then set each section of your report's filter to see if the "Period" column matches the parameter.value of the filter.

Option 2:

Add a report parameter @filter as above. Create a table variable and insert the values passed in by the filter parameter into it.

Use a Case When to pass a 1 or 0 back to SSRS in the final column, representing whether that section should be visible or not.

,Period = CASE
WHEN 'StartDt' IN (SELECT * FROM @table) then 1
ELSE 0
END

Then set your filter to only include data with a period value of 1 and to set the visibility of the report sections accordingly.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM