Very complex SQL Server logic to return multiple rows in a query even if there is only a single row of data, based on report date---will explain in post

  • I have a very complex scenario I am trying to work out in SQL server to save having to enter many duplicate rows of data. I will try and explain it to the best of my ability. Please read the entire thing closely. Even though it is a fairly lengthy post, I promise you ALL of what I am about to explain below matters in coming up with a proper solution for this problem.

    Every day I get a daily report that gives me all Cases that are still open. I create a running monthly tally of these that simply appends all of that days open cases to the end of that months open case file. So at the end of each month I will have roughly 20-22 days worth of data combined together for all non-weekend and holidays.

    The cases contain a field called [Last_Updated_On], which is the date it was last updated. There are roughly 5000 open cases every day. However, of these 5000, approximately 3800 cases every day have the exact same [Last_Updated_On] date, meaning they are exact duplicates of all fields showing up multiple days in a row, as this is the ONLY field that ever changes while a case is open.

    As you can see, if I were to upload all of these exact duplicates to the server, the database would have approximately 75,000 - 80,000 extra records every month for no real reason since the case details are exactly the same. So before I upload the data each month, I remove duplicate records in Excel, leaving me only the 20,000 or so records with [Case_ID] having a unique [Last_Updated_On] date.

    Let's say I have the following columns in the datatable: [Case_ID], [Last_Updated_On] and [Contact_Date]. Additionally, I want there to be 3 virtual calculated columns---[Report Date], [Resolved_Date] and [Age].

    Age is defined as the number of days open between the [Contact_Date] and the [Report_Date]. Now what I want to do is pass in two dates to the Stored Procedure, a Report_Start_Date and a Report_End_Date. [Report_Date] would start with the [Report_Start_Date] and end with [Report_End_Date], incrementing once for each row of data returned. [Resolved_Date] runs a sub_query to check the [Resolved_Case] table for a matching [Case_ID] to determine what date(if at all) the case was Resolved.

    I have 3 examples of how this needs to work below. For simplicity sake in these examples, let's say I pass in one week (only M-F) for the date range of Report_Date_Start and Report_Date_End (3/18/2019 - 3/22/2019).

    In the first case, let's also say this case is not resolved so it has been open all 5 days, and there have been no changes to [Last_Updated_On]. This means that it will store only 1 ROW in the database as the other 4 days would be exact duplicates. However, when I return the query, I need it to return 5 ROWS of data, 1 for each day in the [Report_Start_Date] through [Report_End_Date] range used. The only difference would be in the [Age] and [Report_Date] fields, since each day the case is open, it would increment Age by 1.

    So I know there must be a way to do something like this, but I am really clueless as to where to even start. How do I return multiple rows of data from a single row? the only experience I had in this happening was when I did a Full join before but I am unsure how applicable this is to this situation.

    So for instance here is a map out of what I described above:
    Data in server:

    [Case_ID]        [Last_Updated_On]          [Contact_Date]       [Resolved_Date]  
    US2309-2323         3/15/2019                3/15/2019               NULL

    Query_Returns: 

    [Case_ID]        [Last_Updated_On]           [Contact_Date]       [Report_Date]    [Age] 
    US2309-2323          3/15/2019                3/15/2019            3/18/2019          1 
    US2309-2323          3/15/2019                3/15/2019            3/19/2019          2 
    US2309-2323          3/15/2019                3/15/2019            3/20/2019          3 
    US2309-2323          3/15/2019                3/15/2019            3/21/2019          4 
    US2309-2323          3/15/2019                3/15/2019            3/22/2019          5

    As you can see, the query would return 5 rows---one for each date in the report_date range where the report_date is less than the resolved_date(or all dates if the resolved_date is NULL).

    Now here would be another instance with an additional row for this case based on different [Last_Contacted_On] dates being there and there being multiple rows in the database:

    Data in server: 

    [Case_ID]      [Last_Updated_On]     [Contact_Date]  [Resolved_Date]  
    US2309-2323       3/15/2019            3/15/2019        NULL 
    US2309-2323       3/19/2019            3/15/2019        NULL 
    US2309-2323       3/21/2019            3/15/2019        NULL

    Query_Returns: 

    [Case_ID]      [Last_Updated_On] [Contact_Date] [Report_Date] [Age] 
    US2309-2323       3/15/2019       3/15/2019      3/18/2019        1 
    US2309-2323       3/19/2019       3/15/2019      3/19/2019        2 
    US2309-2323       3/19/2019       3/15/2019      3/20/2019        3 
    US2309-2323       3/21/2019       3/15/2019      3/21/2019        4 
    US2309-2323       3/21/2019       3/15/2019      3/22/2019        5

    As you can see, which [Last_Updated_On] date gets returned for each row is dependant on the [Report_Date]. There are 3 date checks that would need to be made here to determine which one to bring back. 3/15/2019, 3/19/2019 and 3/21/2019. It should be self explanatory why the [Last_Updated_On] dates are what they are.

    The [Report_Date] only takes the latest available [Last_Updated_On] date that is less than or equal to itself. On 3/18, the row would return a [Last_Updated_On] date of 3/15 since 3/19 hasn't occurred yet and it couldn't possibly have been updated tomorrow for the day before. On 3/19, it was last updated on the same day, so it now returns 3/19 for the [Last_Updated_On] date. Same for 3/20 since the [Last_Updated_On] Date used the maximum day that is Less than or equal to the [Report_Date]. On 3/21, it was updated again, so now the [Last_Updated_On] date is 3/21 for the [Report_date] 3/21 and 3/22.

    Now for the 3rd scenario, where The case gets resolved somewhere in the middle of the [Report_Start_Date] and [Report_End_Date] range.

    Data in server:

    [Case_ID]  [Last_Updated_On] [Contact_Date] [Resolved_Date]
    US2309-2323      3/15/2019        3/15/2019       NULL
    US2309-2323      3/19/2019        3/15/2019       NULL
    US2309-2323      3/21/2019        3/15/2019       3/21/2019

    Query_Returns:

    [Case_ID]  [Last_Updated_On] [Contact_Date] [Report_Date] [Age]
    US2309-2323    3/15/2019        3/15/2019      3/18/2019     1
    US2309-2323    3/19/2019        3/15/2019      3/19/2019     2
    US2309-2323    3/19/2019        3/15/2019      3/20/2019     3
    US2309-2323    3/21/2019        3/15/2019      3/21/2019     4

    Notice here that even though the reporting dates were set from 3/18/2019 to 3/22/2019, since the case was resolved on 3/21/2019, there is no row returned for 3/22/2019 since as of 3/21/2019 the case was no longer open.

    I hope this explains in depth what I am trying to accomplish, and I know there must be a way to do this, but this is really much more complex of a query than I have ever even attempted. I don't even know where to begin so any help that could be provided would be greatly appreciated.

  • matter2003 - Thursday, March 21, 2019 5:16 PM

    I have a very complex scenario I am trying to work out in SQL server to save having to enter many duplicate rows of data. I will try and explain it to the best of my ability. Please read the entire thing closely. Even though it is a fairly lengthy post, I promise you ALL of what I am about to explain below matters in coming up with a proper solution for this problem.

    Every day I get a daily report that gives me all Cases that are still open. I create a running monthly tally of these that simply appends all of that days open cases to the end of that months open case file. So at the end of each month I will have roughly 20-22 days worth of data combined together for all non-weekend and holidays.

    The cases contain a field called [Last_Updated_On], which is the date it was last updated. There are roughly 5000 open cases every day. However, of these 5000, approximately 3800 cases every day have the exact same [Last_Updated_On] date, meaning they are exact duplicates of all fields showing up multiple days in a row, as this is the ONLY field that ever changes while a case is open.

    As you can see, if I were to upload all of these exact duplicates to the server, the database would have approximately 75,000 - 80,000 extra records every month for no real reason since the case details are exactly the same. So before I upload the data each month, I remove duplicate records in Excel, leaving me only the 20,000 or so records with [Case_ID] having a unique [Last_Updated_On] date.

    Let's say I have the following columns in the datatable: [Case_ID], [Last_Updated_On] and [Contact_Date]. Additionally, I want there to be 3 virtual calculated columns---[Report Date], [Resolved_Date] and [Age].

    Age is defined as the number of days open between the [Contact_Date] and the [Report_Date]. Now what I want to do is pass in two dates to the Stored Procedure, a Report_Start_Date and a Report_End_Date. [Report_Date] would start with the [Report_Start_Date] and end with [Report_End_Date], incrementing once for each row of data returned. [Resolved_Date] runs a sub_query to check the [Resolved_Case] table for a matching [Case_ID] to determine what date(if at all) the case was Resolved.

    I have 3 examples of how this needs to work below. For simplicity sake in these examples, let's say I pass in one week (only M-F) for the date range of Report_Date_Start and Report_Date_End (3/18/2019 - 3/22/2019).

    In the first case, let's also say this case is not resolved so it has been open all 5 days, and there have been no changes to [Last_Updated_On]. This means that it will store only 1 ROW in the database as the other 4 days would be exact duplicates. However, when I return the query, I need it to return 5 ROWS of data, 1 for each day in the [Report_Start_Date] through [Report_End_Date] range used. The only difference would be in the [Age] and [Report_Date] fields, since each day the case is open, it would increment Age by 1.

    So I know there must be a way to do something like this, but I am really clueless as to where to even start. How do I return multiple rows of data from a single row? the only experience I had in this happening was when I did a Full join before but I am unsure how applicable this is to this situation.

    So for instance here is a map out of what I described above:
    Data in server:

    [Case_ID]        [Last_Updated_On]          [Contact_Date]       [Resolved_Date]  
    US2309-2323         3/15/2019                3/15/2019               NULL

    Query_Returns: 

    [Case_ID]        [Last_Updated_On]           [Contact_Date]       [Report_Date]    [Age] 
    US2309-2323          3/15/2019                3/15/2019            3/18/2019          1 
    US2309-2323          3/15/2019                3/15/2019            3/19/2019          2 
    US2309-2323          3/15/2019                3/15/2019            3/20/2019          3 
    US2309-2323          3/15/2019                3/15/2019            3/21/2019          4 
    US2309-2323          3/15/2019                3/15/2019            3/22/2019          5

    As you can see, the query would return 5 rows---one for each date in the report_date range where the report_date is less than the resolved_date(or all dates if the resolved_date is NULL).

    Now here would be another instance with an additional row for this case based on different [Last_Contacted_On] dates being there and there being multiple rows in the database:

    Data in server: 

    [Case_ID]      [Last_Updated_On]     [Contact_Date]  [Resolved_Date]  
    US2309-2323       3/15/2019            3/15/2019        NULL 
    US2309-2323       3/19/2019            3/15/2019        NULL 
    US2309-2323       3/21/2019            3/15/2019        NULL

    Query_Returns: 

    [Case_ID]      [Last_Updated_On] [Contact_Date] [Report_Date] [Age] 
    US2309-2323       3/15/2019       3/15/2019      3/18/2019        1 
    US2309-2323       3/19/2019       3/15/2019      3/19/2019        2 
    US2309-2323       3/19/2019       3/15/2019      3/20/2019        3 
    US2309-2323       3/21/2019       3/15/2019      3/21/2019        4 
    US2309-2323       3/21/2019       3/15/2019      3/22/2019        5

    As you can see, which [Last_Updated_On] date gets returned for each row is dependant on the [Report_Date]. There are 3 date checks that would need to be made here to determine which one to bring back. 3/15/2019, 3/19/2019 and 3/21/2019. It should be self explanatory why the [Last_Updated_On] dates are what they are.

    The [Report_Date] only takes the latest available [Last_Updated_On] date that is less than or equal to itself. On 3/18, the row would return a [Last_Updated_On] date of 3/15 since 3/19 hasn't occurred yet and it couldn't possibly have been updated tomorrow for the day before. On 3/19, it was last updated on the same day, so it now returns 3/19 for the [Last_Updated_On] date. Same for 3/20 since the [Last_Updated_On] Date used the maximum day that is Less than or equal to the [Report_Date]. On 3/21, it was updated again, so now the [Last_Updated_On] date is 3/21 for the [Report_date] 3/21 and 3/22.

    Now for the 3rd scenario, where The case gets resolved somewhere in the middle of the [Report_Start_Date] and [Report_End_Date] range.

    Data in server:

    [Case_ID]  [Last_Updated_On] [Contact_Date] [Resolved_Date]
    US2309-2323      3/15/2019        3/15/2019       NULL
    US2309-2323      3/19/2019        3/15/2019       NULL
    US2309-2323      3/21/2019        3/15/2019       3/21/2019

    Query_Returns:

    [Case_ID]  [Last_Updated_On] [Contact_Date] [Report_Date] [Age]
    US2309-2323    3/15/2019        3/15/2019      3/18/2019     1
    US2309-2323    3/19/2019        3/15/2019      3/19/2019     2
    US2309-2323    3/19/2019        3/15/2019      3/20/2019     3
    US2309-2323    3/21/2019        3/15/2019      3/21/2019     4

    Notice here that even though the reporting dates were set from 3/18/2019 to 3/22/2019, since the case was resolved on 3/21/2019, there is no row returned for 3/22/2019 since as of 3/21/2019 the case was no longer open.

    I hope this explains in depth what I am trying to accomplish, and I know there must be a way to do this, but this is really much more complex of a query than I have ever even attempted. I don't even know where to begin so any help that could be provided would be greatly appreciated.

    What would be better would be to include the DDL for the table, sample data as insert statements.  I would make the sample data match what you posted, perhaps with different case ids for the different scenarios you posted.

  • Lynn Pettis - Thursday, March 21, 2019 10:25 PM

    matter2003 - Thursday, March 21, 2019 5:16 PM

    I have a very complex scenario I am trying to work out in SQL server to save having to enter many duplicate rows of data. I will try and explain it to the best of my ability. Please read the entire thing closely. Even though it is a fairly lengthy post, I promise you ALL of what I am about to explain below matters in coming up with a proper solution for this problem.

    Every day I get a daily report that gives me all Cases that are still open. I create a running monthly tally of these that simply appends all of that days open cases to the end of that months open case file. So at the end of each month I will have roughly 20-22 days worth of data combined together for all non-weekend and holidays.

    The cases contain a field called [Last_Updated_On], which is the date it was last updated. There are roughly 5000 open cases every day. However, of these 5000, approximately 3800 cases every day have the exact same [Last_Updated_On] date, meaning they are exact duplicates of all fields showing up multiple days in a row, as this is the ONLY field that ever changes while a case is open.

    As you can see, if I were to upload all of these exact duplicates to the server, the database would have approximately 75,000 - 80,000 extra records every month for no real reason since the case details are exactly the same. So before I upload the data each month, I remove duplicate records in Excel, leaving me only the 20,000 or so records with [Case_ID] having a unique [Last_Updated_On] date.

    Let's say I have the following columns in the datatable: [Case_ID], [Last_Updated_On] and [Contact_Date]. Additionally, I want there to be 3 virtual calculated columns---[Report Date], [Resolved_Date] and [Age].

    Age is defined as the number of days open between the [Contact_Date] and the [Report_Date]. Now what I want to do is pass in two dates to the Stored Procedure, a Report_Start_Date and a Report_End_Date. [Report_Date] would start with the [Report_Start_Date] and end with [Report_End_Date], incrementing once for each row of data returned. [Resolved_Date] runs a sub_query to check the [Resolved_Case] table for a matching [Case_ID] to determine what date(if at all) the case was Resolved.

    I have 3 examples of how this needs to work below. For simplicity sake in these examples, let's say I pass in one week (only M-F) for the date range of Report_Date_Start and Report_Date_End (3/18/2019 - 3/22/2019).

    In the first case, let's also say this case is not resolved so it has been open all 5 days, and there have been no changes to [Last_Updated_On]. This means that it will store only 1 ROW in the database as the other 4 days would be exact duplicates. However, when I return the query, I need it to return 5 ROWS of data, 1 for each day in the [Report_Start_Date] through [Report_End_Date] range used. The only difference would be in the [Age] and [Report_Date] fields, since each day the case is open, it would increment Age by 1.

    So I know there must be a way to do something like this, but I am really clueless as to where to even start. How do I return multiple rows of data from a single row? the only experience I had in this happening was when I did a Full join before but I am unsure how applicable this is to this situation.

    So for instance here is a map out of what I described above:
    Data in server:

    [Case_ID]        [Last_Updated_On]          [Contact_Date]       [Resolved_Date]  
    US2309-2323         3/15/2019                3/15/2019               NULL

    Query_Returns: 

    [Case_ID]        [Last_Updated_On]           [Contact_Date]       [Report_Date]    [Age] 
    US2309-2323          3/15/2019                3/15/2019            3/18/2019          1 
    US2309-2323          3/15/2019                3/15/2019            3/19/2019          2 
    US2309-2323          3/15/2019                3/15/2019            3/20/2019          3 
    US2309-2323          3/15/2019                3/15/2019            3/21/2019          4 
    US2309-2323          3/15/2019                3/15/2019            3/22/2019          5

    As you can see, the query would return 5 rows---one for each date in the report_date range where the report_date is less than the resolved_date(or all dates if the resolved_date is NULL).

    Now here would be another instance with an additional row for this case based on different [Last_Contacted_On] dates being there and there being multiple rows in the database:

    Data in server: 

    [Case_ID]      [Last_Updated_On]     [Contact_Date]  [Resolved_Date]  
    US2309-2323       3/15/2019            3/15/2019        NULL 
    US2309-2323       3/19/2019            3/15/2019        NULL 
    US2309-2323       3/21/2019            3/15/2019        NULL

    Query_Returns: 

    [Case_ID]      [Last_Updated_On] [Contact_Date] [Report_Date] [Age] 
    US2309-2323       3/15/2019       3/15/2019      3/18/2019        1 
    US2309-2323       3/19/2019       3/15/2019      3/19/2019        2 
    US2309-2323       3/19/2019       3/15/2019      3/20/2019        3 
    US2309-2323       3/21/2019       3/15/2019      3/21/2019        4 
    US2309-2323       3/21/2019       3/15/2019      3/22/2019        5

    As you can see, which [Last_Updated_On] date gets returned for each row is dependant on the [Report_Date]. There are 3 date checks that would need to be made here to determine which one to bring back. 3/15/2019, 3/19/2019 and 3/21/2019. It should be self explanatory why the [Last_Updated_On] dates are what they are.

    The [Report_Date] only takes the latest available [Last_Updated_On] date that is less than or equal to itself. On 3/18, the row would return a [Last_Updated_On] date of 3/15 since 3/19 hasn't occurred yet and it couldn't possibly have been updated tomorrow for the day before. On 3/19, it was last updated on the same day, so it now returns 3/19 for the [Last_Updated_On] date. Same for 3/20 since the [Last_Updated_On] Date used the maximum day that is Less than or equal to the [Report_Date]. On 3/21, it was updated again, so now the [Last_Updated_On] date is 3/21 for the [Report_date] 3/21 and 3/22.

    Now for the 3rd scenario, where The case gets resolved somewhere in the middle of the [Report_Start_Date] and [Report_End_Date] range.

    Data in server:

    [Case_ID]  [Last_Updated_On] [Contact_Date] [Resolved_Date]
    US2309-2323      3/15/2019        3/15/2019       3/21/2019
    US2309-2323      3/19/2019        3/15/2019       3/21/2019
    US2309-2323      3/21/2019        3/15/2019       3/21/2019

    Query_Returns:

    [Case_ID]  [Last_Updated_On] [Contact_Date] [Report_Date] [Age]
    US2309-2323    3/15/2019        3/15/2019      3/18/2019     1
    US2309-2323    3/19/2019        3/15/2019      3/19/2019     2
    US2309-2323    3/19/2019        3/15/2019      3/20/2019     3
    US2309-2323    3/21/2019        3/15/2019      3/21/2019     4

    Notice here that even though the reporting dates were set from 3/18/2019 to 3/22/2019, since the case was resolved on 3/21/2019, there is no row returned for 3/22/2019 since as of 3/21/2019 the case was no longer open.

    I hope this explains in depth what I am trying to accomplish, and I know there must be a way to do this, but this is really much more complex of a query than I have ever even attempted. I don't even know where to begin so any help that could be provided would be greatly appreciated.

    What would be better would be to include the DDL for the table, sample data as insert statements.  I would make the sample data match what you posted, perhaps with different case ids for the different scenarios you posted.


    CREATE TABLE Open_Cases (
      [Case_ID] varchar(15),
      [Last_Updated_On] datetime,
      [Contact_Date] datetime,
    )
    CREATE TABLE Resolved_Cases(
    [Case_ID] varchar(15),
    [Resolved_Date] datetime
    )

    INSERT INTO Open_Cases VALUES ('US2309-2323',  '3/15/2019',   '3/15/2019 ')
    INSERT INTO Open_Cases VALUES ('US2309-2323',  '3/19/2019',   '3/15/2019 ')
    INSERT INTO Open_Cases VALUES ('US2309-2323',  '3/20/2019',   '3/15/2019 ')

    INSERT INTO Resolved_Cases VALUES ('US2309-2323',  '3/21/2019')

    DECLARE @Report_Start_Date date;
    DECLARE @Reprot_End_Date date;
    SET @Report_Start_Date = '3/18/2019';
    SET @Report_End_Date = '3/22/2019';

    BEGIN 
      WITH GetReportDate AS (
      --***SQL Code to generate each day based on the start and end date range 
    ),
       SELECT o.Case_ID, o.Last_Updated_On, o.Contact_Date, r.Resolved_Date,
       (SELECT CalcAge(@Report_Start_Date, @Report_End_Date)  AS Age,
        FROM Open_Cases AS o
       LEFT JOIN Resolved_Cases as r
       ON r.Case_ID = o.Case_ID
       EXCEPT
       SELECT r.Resolved_Date, FROM Resolved_Cases as r
       LEFT JOIN GetReportDate  as Rep
       ON Rep.Report_Date > r.Resolved_Date
    END

    This should be everything needed be able to help with this issue. Note CalcAge is a Scalar Table Function returning an INT which gives us the number of days between the 2 dates subtracting Holidays and weekends.  I'm not sure if a CTE is what I want to generate a row for each Report_Date based on the start and end date range, but I'm guessing this might work? I do know that I can't do a comparison in the EXCEPT Statement between Report_Date and Resolved_Date because Report_Date is a calculated column, and I know using a CTE would allow the comparison, but again, not sure if this is a valid method to get this working.

      Also guessing that I should use an Except based on the report_date being greater than the Resolved_Date...feel free to correct and/or change any of that Statement as I am giving my best shot at guessing what should go in there...hoping someone can fill in the rest for me.

  • matter2003 - Thursday, March 21, 2019 10:37 PM

    Lynn Pettis - Thursday, March 21, 2019 10:25 PM

    matter2003 - Thursday, March 21, 2019 5:16 PM

    I have a very complex scenario I am trying to work out in SQL server to save having to enter many duplicate rows of data. I will try and explain it to the best of my ability. Please read the entire thing closely. Even though it is a fairly lengthy post, I promise you ALL of what I am about to explain below matters in coming up with a proper solution for this problem.

    Every day I get a daily report that gives me all Cases that are still open. I create a running monthly tally of these that simply appends all of that days open cases to the end of that months open case file. So at the end of each month I will have roughly 20-22 days worth of data combined together for all non-weekend and holidays.

    The cases contain a field called [Last_Updated_On], which is the date it was last updated. There are roughly 5000 open cases every day. However, of these 5000, approximately 3800 cases every day have the exact same [Last_Updated_On] date, meaning they are exact duplicates of all fields showing up multiple days in a row, as this is the ONLY field that ever changes while a case is open.

    As you can see, if I were to upload all of these exact duplicates to the server, the database would have approximately 75,000 - 80,000 extra records every month for no real reason since the case details are exactly the same. So before I upload the data each month, I remove duplicate records in Excel, leaving me only the 20,000 or so records with [Case_ID] having a unique [Last_Updated_On] date.

    Let's say I have the following columns in the datatable: [Case_ID], [Last_Updated_On] and [Contact_Date]. Additionally, I want there to be 3 virtual calculated columns---[Report Date], [Resolved_Date] and [Age].

    Age is defined as the number of days open between the [Contact_Date] and the [Report_Date]. Now what I want to do is pass in two dates to the Stored Procedure, a Report_Start_Date and a Report_End_Date. [Report_Date] would start with the [Report_Start_Date] and end with [Report_End_Date], incrementing once for each row of data returned. [Resolved_Date] runs a sub_query to check the [Resolved_Case] table for a matching [Case_ID] to determine what date(if at all) the case was Resolved.

    I have 3 examples of how this needs to work below. For simplicity sake in these examples, let's say I pass in one week (only M-F) for the date range of Report_Date_Start and Report_Date_End (3/18/2019 - 3/22/2019).

    In the first case, let's also say this case is not resolved so it has been open all 5 days, and there have been no changes to [Last_Updated_On]. This means that it will store only 1 ROW in the database as the other 4 days would be exact duplicates. However, when I return the query, I need it to return 5 ROWS of data, 1 for each day in the [Report_Start_Date] through [Report_End_Date] range used. The only difference would be in the [Age] and [Report_Date] fields, since each day the case is open, it would increment Age by 1.

    So I know there must be a way to do something like this, but I am really clueless as to where to even start. How do I return multiple rows of data from a single row? the only experience I had in this happening was when I did a Full join before but I am unsure how applicable this is to this situation.

    So for instance here is a map out of what I described above:
    Data in server:

    [Case_ID]        [Last_Updated_On]          [Contact_Date]       [Resolved_Date]  
    US2309-2323         3/15/2019                3/15/2019               NULL

    Query_Returns: 

    [Case_ID]        [Last_Updated_On]           [Contact_Date]       [Report_Date]    [Age] 
    US2309-2323          3/15/2019                3/15/2019            3/18/2019          1 
    US2309-2323          3/15/2019                3/15/2019            3/19/2019          2 
    US2309-2323          3/15/2019                3/15/2019            3/20/2019          3 
    US2309-2323          3/15/2019                3/15/2019            3/21/2019          4 
    US2309-2323          3/15/2019                3/15/2019            3/22/2019          5

    As you can see, the query would return 5 rows---one for each date in the report_date range where the report_date is less than the resolved_date(or all dates if the resolved_date is NULL).

    Now here would be another instance with an additional row for this case based on different [Last_Contacted_On] dates being there and there being multiple rows in the database:

    Data in server: 

    [Case_ID]      [Last_Updated_On]     [Contact_Date]  [Resolved_Date]  
    US2309-2323       3/15/2019            3/15/2019        NULL 
    US2309-2323       3/19/2019            3/15/2019        NULL 
    US2309-2323       3/21/2019            3/15/2019        NULL

    Query_Returns: 

    [Case_ID]      [Last_Updated_On] [Contact_Date] [Report_Date] [Age] 
    US2309-2323       3/15/2019       3/15/2019      3/18/2019        1 
    US2309-2323       3/19/2019       3/15/2019      3/19/2019        2 
    US2309-2323       3/19/2019       3/15/2019      3/20/2019        3 
    US2309-2323       3/21/2019       3/15/2019      3/21/2019        4 
    US2309-2323       3/21/2019       3/15/2019      3/22/2019        5

    As you can see, which [Last_Updated_On] date gets returned for each row is dependant on the [Report_Date]. There are 3 date checks that would need to be made here to determine which one to bring back. 3/15/2019, 3/19/2019 and 3/21/2019. It should be self explanatory why the [Last_Updated_On] dates are what they are.

    The [Report_Date] only takes the latest available [Last_Updated_On] date that is less than or equal to itself. On 3/18, the row would return a [Last_Updated_On] date of 3/15 since 3/19 hasn't occurred yet and it couldn't possibly have been updated tomorrow for the day before. On 3/19, it was last updated on the same day, so it now returns 3/19 for the [Last_Updated_On] date. Same for 3/20 since the [Last_Updated_On] Date used the maximum day that is Less than or equal to the [Report_Date]. On 3/21, it was updated again, so now the [Last_Updated_On] date is 3/21 for the [Report_date] 3/21 and 3/22.

    Now for the 3rd scenario, where The case gets resolved somewhere in the middle of the [Report_Start_Date] and [Report_End_Date] range.

    Data in server:

    [Case_ID]  [Last_Updated_On] [Contact_Date] [Resolved_Date]
    US2309-2323      3/15/2019        3/15/2019       3/21/2019
    US2309-2323      3/19/2019        3/15/2019       3/21/2019
    US2309-2323      3/21/2019        3/15/2019       3/21/2019

    Query_Returns:

    [Case_ID]  [Last_Updated_On] [Contact_Date] [Report_Date] [Age]
    US2309-2323    3/15/2019        3/15/2019      3/18/2019     1
    US2309-2323    3/19/2019        3/15/2019      3/19/2019     2
    US2309-2323    3/19/2019        3/15/2019      3/20/2019     3
    US2309-2323    3/21/2019        3/15/2019      3/21/2019     4

    Notice here that even though the reporting dates were set from 3/18/2019 to 3/22/2019, since the case was resolved on 3/21/2019, there is no row returned for 3/22/2019 since as of 3/21/2019 the case was no longer open.

    I hope this explains in depth what I am trying to accomplish, and I know there must be a way to do this, but this is really much more complex of a query than I have ever even attempted. I don't even know where to begin so any help that could be provided would be greatly appreciated.

    What would be better would be to include the DDL for the table, sample data as insert statements.  I would make the sample data match what you posted, perhaps with different case ids for the different scenarios you posted.


    CREATE TABLE Open_Cases (
      [Case_ID] varchar(15),
      [Last_Updated_On] datetime,
      [Contact_Date] datetime,
    )
    CREATE TABLE Resolved_Cases(
    [Case_ID] varchar(15),
    [Resolved_Date] datetime
    )

    INSERT INTO Open_Cases VALUES ('US2309-2323',  '3/15/2019',   '3/15/2019 ')
    INSERT INTO Open_Cases VALUES ('US2309-2323',  '3/19/2019',   '3/15/2019 ')
    INSERT INTO Open_Cases VALUES ('US2309-2323',  '3/20/2019',   '3/15/2019 ')

    INSERT INTO Resolved_Cases VALUES ('US2309-2323',  '3/21/2019')

    DECLARE @Report_Start_Date date;
    DECLARE @Reprot_End_Date date;
    SET @Report_Start_Date = '3/18/2019';
    SET @Report_End_Date = '3/22/2019';

    BEGIN 
      WITH GetReportDate AS (
      --***SQL Code to generate each day based on the start and end date range 
    ),
       SELECT o.Case_ID, o.Last_Updated_On, o.Contact_Date, r.Resolved_Date,
       (SELECT CalcAge(@Report_Start_Date, @Report_End_Date)  AS Age,
        FROM Open_Cases AS o
       LEFT JOIN Resolved_Cases as r
       ON r.Case_ID = o.Case_ID
       EXCEPT
       SELECT r.Resolved_Date, FROM Resolved_Cases as r
       LEFT JOIN GetReportDate  as Rep
       ON Rep.Report_Date > r.Resolved_Date
    END

    This should be everything needed be able to help with this issue. Note CalcAge is a Scalar Table Function returning an INT which gives us the number of days between the 2 dates subtracting Holidays and weekends.  I'm not sure if a CTE is what I want to generate a row for each Report_Date based on the start and end date range, but I'm guessing this might work? I do know that I can't do a comparison in the EXCEPT Statement between Report_Date and Resolved_Date because Report_Date is a calculated column, and I know using a CTE would allow the comparison, but again, not sure if this is a valid method to get this working.

      Also guessing that I should use an Except based on the report_date being greater than the Resolved_Date...feel free to correct and/or change any of that Statement as I am giving my best shot at guessing what should go in there...hoping someone can fill in the rest for me.

    Please post the code for the UDF.  Also, did you actually post enough sample data to cover all the cases you posted in your problem description?  It looks rather lean on that side.  I also asked you use different case ids for each of the different cases you posted.

  • Part of the problem is that your UDF is a scalar function (not a table-valued function) given the way that you are calling it.  I've substituted a Table Value Constructor for your function.
    PS: Scalar functions and table-valued functions are mutually exclusive.  You cannot have a scalar table-valued function.

    As Lynn mentioned, your sample data only covers one case.  I added a second case where the case had not yet been resolved.

    I believe that this gives you what you need.  It is very loosely based on work by Itzik Ben-Gan on packing intervals.

    WITH Case_Statuses AS
    (
        SELECT
            o.Case_ID
        ,    o.Contact_Date
        ,    o.Last_Updated_On AS Update_Status_Begin_Date
        ,    LEAD(o.Last_Updated_On, 1, COALESCE(r.Resolved_Date, '9999-12-31')) OVER(PARTITION BY o.Case_ID ORDER BY o.Last_Updated_On) AS Update_Status_End_Dt
        FROM #Open_Cases o
        LEFT OUTER JOIN #Resolved_Cases r
            ON o.Case_ID = r.Case_ID
    )

    SELECT *
    FROM Case_Statuses cs
    CROSS APPLY ( VALUES(1), (2), (3), (4), (5), (6) ) CalcAge(Age)
    CROSS APPLY ( VALUES(DATEADD(DAY, CalcAge.Age - 1, @Report_Start_Date) ) ) rd(Report_Date)
    WHERE cs.Update_Status_Begin_Date <= rd.Report_Date
        AND rd.Report_Date < cs.Update_Status_End_Dt
        AND rd.Report_Date BETWEEN @Report_Start_Date AND @Report_End_Date

    Drew

    J. Drew Allen
    Business Intelligence Analyst
    Philadelphia, PA

  • This is not a full solution, I know, but I made a start for you.  I had a hard time understanding exactly how the sample data you provided related to the table layouts you showed, so I may be a little off in my solution.  Here is what I have; explanation to follow:
    CREATE    -- TRUNCATE -- DROP
    TABLE    Open_Cases
        (
        [Case_ID] varchar(15),
        [Last_Updated_On] datetime,
        [Contact_Date] datetime,
        )

    CREATE -- TRUNCATE -- DROP
    TABLE    Resolved_Cases
        (
        [Case_ID] varchar(15),
        [Resolved_Date] datetime
        )

    INSERT INTO Open_Cases VALUES ('US2309-2323', '3/15/2019', '3/15/2019 ')

    DECLARE    @Report_Start_Date date = '3/18/2019';
    DECLARE    @Report_End_Date date = '3/22/2019';

    WITH    Four
    AS    (SELECT 1 AS N UNION SELECT 2 UNION SELECT 3 UNION SELECT 4),
        Sixteen
    AS    (SELECT ROW_NUMBER() OVER (ORDER BY a.N) AS N FROM Four a CROSS JOIN Four b),
        TwoFiftySix
    AS    (SELECT ROW_NUMBER() OVER (ORDER BY a.N) AS N FROM Sixteen a CROSS JOIN Sixteen b),
        LocalTally
    AS    (SELECT ROW_NUMBER() OVER (ORDER BY a.N) AS N FROM TwoFiftySix a CROSS JOIN Sixteen b),
        Reporting_Days
    AS    (
        SELECT    N, DATEADD(DAY, N - 1, @Report_Start_Date) AS Report_Date
        FROM    LocalTally
        WHERE    N <= DATEDIFF(DAY, @Report_Start_Date, @Report_End_Date) + 1
        )
    SELECT    b.Case_ID,
        b.Last_Updated_On,
        b.Contact_Date,
        r.Report_Date,
        DATEDIFF(DAY, @Report_Start_Date, r.Report_Date) + 1 AS Age
    FROM        (
            SELECT    o.Case_ID,
                o.Last_Updated_On,
                o.Contact_Date,
                r.Resolved_Date,
                ISNULL(r.Resolved_Date, '99991231') AS Boundary_Date
            FROM        Open_Cases o
                LEFT JOIN Resolved_Cases r
                ON    r.Case_ID = o.Case_ID
            ) b -- base_data
        JOIN    Reporting_Days r
        ON        r.Report_Date BETWEEN b.Last_Updated_On AND b.Boundary_Date

    The sample data loads one record into the Open_Cases table because your "Data in Server" example has only one row.  Because the "Resolved_Date" is null, there is no data in the Resolved_Cases table.
    If you have not researched Tally tables, you should look into it.  Basically, it is a table with sequential numbers from 1 to whatever you want.  Jeff Moden has great information on Tally tables, and lots of research to support their use.  Here are two articles to get you started:
    http://www.sqlservercentral.com/articles/T-SQL/62867/
    http://www.sqlservercentral.com/blogs/dwainsql/2014/03/27/tally-tables-in-t-sql/
    This table allows you to turn one row into multiple, which is how it is used here.  Rather than having an actual table named Tally (which has advantages and disadvantages), this solution creates one using CROSS JOIN and ROW_NUMBER(), which Moden says is very fast because there are no table reads, and I have found that to be true in my testing.  This version produces only 4096 rows, but that should be sufficient for this solution.
    I use the LocalTally table to create one row per reporting date between the parameter start and end dates, then join the base data to it using the dates in the base data.  The output here matches the "Query_Returns" section in your original post, so if this does not do exactly what you want, it may point the way to a solution for you.

  • fahey.jonathan - Friday, March 22, 2019 9:22 AM

    This is not a full solution, I know, but I made a start for you.  I had a hard time understanding exactly how the sample data you provided related to the table layouts you showed, so I may be a little off in my solution.  Here is what I have; explanation to follow:
    CREATE    -- TRUNCATE -- DROP
    TABLE    Open_Cases
        (
        [Case_ID] varchar(15),
        [Last_Updated_On] datetime,
        [Contact_Date] datetime,
        )

    CREATE -- TRUNCATE -- DROP
    TABLE    Resolved_Cases
        (
        [Case_ID] varchar(15),
        [Resolved_Date] datetime
        )

    INSERT INTO Open_Cases VALUES ('US2309-2323', '3/15/2019', '3/15/2019 ')

    DECLARE    @Report_Start_Date date = '3/18/2019';
    DECLARE    @Report_End_Date date = '3/22/2019';

    WITH    Four
    AS    (SELECT 1 AS N UNION SELECT 2 UNION SELECT 3 UNION SELECT 4),
        Sixteen
    AS    (SELECT ROW_NUMBER() OVER (ORDER BY a.N) AS N FROM Four a CROSS JOIN Four b),
        TwoFiftySix
    AS    (SELECT ROW_NUMBER() OVER (ORDER BY a.N) AS N FROM Sixteen a CROSS JOIN Sixteen b),
        LocalTally
    AS    (SELECT ROW_NUMBER() OVER (ORDER BY a.N) AS N FROM TwoFiftySix a CROSS JOIN Sixteen b),
        Reporting_Days
    AS    (
        SELECT    N, DATEADD(DAY, N - 1, @Report_Start_Date) AS Report_Date
        FROM    LocalTally
        WHERE    N <= DATEDIFF(DAY, @Report_Start_Date, @Report_End_Date) + 1
        )
    SELECT    b.Case_ID,
        b.Last_Updated_On,
        b.Contact_Date,
        r.Report_Date,
        DATEDIFF(DAY, @Report_Start_Date, r.Report_Date) + 1 AS Age
    FROM        (
            SELECT    o.Case_ID,
                o.Last_Updated_On,
                o.Contact_Date,
                r.Resolved_Date,
                ISNULL(r.Resolved_Date, '99991231') AS Boundary_Date
            FROM        Open_Cases o
                LEFT JOIN Resolved_Cases r
                ON    r.Case_ID = o.Case_ID
            ) b -- base_data
        JOIN    Reporting_Days r
        ON        r.Report_Date BETWEEN b.Last_Updated_On AND b.Boundary_Date

    The sample data loads one record into the Open_Cases table because your "Data in Server" example has only one row.  Because the "Resolved_Date" is null, there is no data in the Resolved_Cases table.
    If you have not researched Tally tables, you should look into it.  Basically, it is a table with sequential numbers from 1 to whatever you want.  Jeff Moden has great information on Tally tables, and lots of research to support their use.  Here are two articles to get you started:
    http://www.sqlservercentral.com/articles/T-SQL/62867/
    http://www.sqlservercentral.com/blogs/dwainsql/2014/03/27/tally-tables-in-t-sql/
    This table allows you to turn one row into multiple, which is how it is used here.  Rather than having an actual table named Tally (which has advantages and disadvantages), this solution creates one using CROSS JOIN and ROW_NUMBER(), which Moden says is very fast because there are no table reads, and I have found that to be true in my testing.  This version produces only 4096 rows, but that should be sufficient for this solution.
    I use the LocalTally table to create one row per reporting date between the parameter start and end dates, then join the base data to it using the dates in the base data.  The output here matches the "Query_Returns" section in your original post, so if this does not do exactly what you want, it may point the way to a solution for you.

    This is very close to what I need, however I see two issues:

    1) The start and end dates are dynamic and cannot be hard coded just for a certain date range.  This date range is going to change based on the report being pulled and/or what the users select as start and end dates.

    2) When I add in the other INSERTS(the other two for the open cases with different [Last_Updated_On] dates and the one for the Resolved Case) I am getting duplicate entries displaying for the cases, when it should ONLY be taking the latest [Last_Updated_On] case that has a date before or on the [Report_Date]---I know this would be MAX [Last_Updated_On] date where [Last_Updated_On] <= [Report_Date] but I don't know where that would go in all of this...

    data:image/png;base64,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

    In this case it should be returning 4 rows(circled in Red), but it returns 28. It does correctly NOT return anything for 3/22 since the case was resolved on 3/22:
    data:image/png;base64,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

  • Lynn Pettis - Friday, March 22, 2019 8:14 AM

    Please post the code for the UDF.  Also, did you actually post enough sample data to cover all the cases you posted in your problem description?  It looks rather lean on that side.  I also asked you use different case ids for each of the different cases you posted.

    As requested, here is the UDF. I believe the cases I posted should be enough to cover any scenario, because additional Case_Id's will be handled in the same way.  But I see what you are saying---the solution is hard to tell if it works in all three cases because when you add data it will only be able to test one of the cases.

    So I will assume the initial data is already loaded from Case 3

    case 1:

    [Case_ID]   [Last_Updated_On] [Contact_Date] [Resolved_Date]
    US2309-2325    3/15/2019         3/15/2019         NULL              

    Case 2:

    [Case_ID]   [Last_Updated_On] [Contact_Date] [Resolved_Date]
    US2309-2326    3/15/2019         3/15/2019         NULL              
    US2309-2326    3/19/2019         3/15/2019         NULL  
    US2309-2326    3/20/2019         3/15/2019         NULL  

    CREATE FUNCTION [CalcAge]

    (

    -- Add the parameters for the function here

    @Start date,

    @End date

    )


    RETURNS int

    AS

    BEGIN

    -- Add the T-SQL statements to compute the return value here RETURN  (SELECT  DATEDIFF(dd, @Start , @End) + 1 )) -  (DATEDIFF(wk, @Start, @End) *2)  -  (SELECT  COUNT(*)  AS NumHolidays FROM Holidays WHERE Holiday_Date  BETWEEN @Start AND @End) -1END

    Holidays is a table that contains dates for holidays(there are none in this example, so that part can be removed). It counts the number of days in the holiday table between the start and end date and then subtracts them from the number of non-weekend days.

    The other two items in the calculation I don't really understand how they work, but I found this solution on stackoverflow and after checking several scenarios, it worked properly, so I used it.  Basically it excludes weekend days from the calculation of the number of days between dates(similar to the NETWORKDAYS function in Excel).  The other solutions talked about  variations of putting every possible day into a table and then checking if each day was a weekend day but I didn't want to do all that, and when I saw this solution provided a way to avoid it, I used it.

  • matter2003 - Friday, March 22, 2019 10:48 AM

    Lynn Pettis - Friday, March 22, 2019 8:14 AM

    Please post the code for the UDF.  Also, did you actually post enough sample data to cover all the cases you posted in your problem description?  It looks rather lean on that side.  I also asked you use different case ids for each of the different cases you posted.

    As requested, here is the UDF. I believe the cases I posted should be enough to cover any scenario, because additional Case_Id's will be handled in the same way.  But I see what you are saying---the solution is hard to tell if it works in all three cases because when you add data it will only be able to test one of the cases.

    So I will assume the initial data is already loaded from Case 3

    case 1:

    [Case_ID]   [Last_Updated_On] [Contact_Date] [Resolved_Date]
    US2309-2325    3/15/2019         3/15/2019         NULL              

    Case 2:

    [Case_ID]   [Last_Updated_On] [Contact_Date] [Resolved_Date]
    US2309-2326    3/15/2019         3/15/2019         NULL              
    US2309-2326    3/19/2019         3/15/2019         NULL  
    US2309-2326    3/20/2019         3/15/2019         NULL  

    CREATE FUNCTION [CalcAge]

    (

    -- Add the parameters for the function here

    @Start date,

    @End date

    )


    RETURNS int

    AS

    BEGIN

    -- Add the T-SQL statements to compute the return value here RETURN  (SELECT  DATEDIFF(dd, @Start , @End) + 1 )) -  (DATEDIFF(wk, @Start, @End) *2)  -  (SELECT  COUNT(*)  AS NumHolidays FROM Holidays WHERE Holiday_Date  BETWEEN @Start AND @End) -1END

    Holidays is a table that contains dates for holidays(there are none in this example, so that part can be removed). It counts the number of days in the holiday table between the start and end date and then subtracts them from the number of non-weekend days.

    The other two items in the calculation I don't really understand how they work, but I found this solution on stackoverflow and after checking several scenarios, it worked properly, so I used it.  Basically it excludes weekend days from the calculation of the number of days between dates(similar to the NETWORKDAYS function in Excel).  The other solutions talked about  variations of putting every possible day into a table and then checking if each day was a weekend day but I didn't want to do all that, and when I saw this solution provided a way to avoid it, I used it.

    You keep adding additional tables to the requirements.  Now we need your table Holidays if we are to actually help.  Also, I still thing you have left out data for all the cases you posted in your initial post.  If the data you have already posted is to be used for all the cases, I am at a loss.

  • drew.allen - Friday, March 22, 2019 9:06 AM

    Part of the problem is that your UDF is a scalar function (not a table-valued function) given the way that you are calling it.  I've substituted a Table Value Constructor for your function.
    PS: Scalar functions and table-valued functions are mutually exclusive.  You cannot have a scalar table-valued function.

    As Lynn mentioned, your sample data only covers one case.  I added a second case where the case had not yet been resolved.

    I believe that this gives you what you need.  It is very loosely based on work by Itzik Ben-Gan on packing intervals.

    WITH Case_Statuses AS
    (
        SELECT
            o.Case_ID
        ,    o.Contact_Date
        ,    o.Last_Updated_On AS Update_Status_Begin_Date
        ,    LEAD(o.Last_Updated_On, 1, COALESCE(r.Resolved_Date, '9999-12-31')) OVER(PARTITION BY o.Case_ID ORDER BY o.Last_Updated_On) AS Update_Status_End_Dt
        FROM #Open_Cases o
        LEFT OUTER JOIN #Resolved_Cases r
            ON o.Case_ID = r.Case_ID
    )

    SELECT *
    FROM Case_Statuses cs
    CROSS APPLY ( VALUES(1), (2), (3), (4), (5), (6) ) CalcAge(Age)
    CROSS APPLY ( VALUES(DATEADD(DAY, CalcAge.Age - 1, @Report_Start_Date) ) ) rd(Report_Date)
    WHERE cs.Update_Status_Begin_Date <= rd.Report_Date
        AND rd.Report_Date < cs.Update_Status_End_Dt
        AND rd.Report_Date BETWEEN @Report_Start_Date AND @Report_End_Date

    Drew

    Like the other post, the date selection range needs to be able to handle a dynamic date range...this date range will change, it is not going to remain the same and will vary by report and/or user entered values...is there a way to make the date range dynamic? (with the caveat it will skip over weekend and holidays and not include those---I can make a version of my calc age function that will return a date perhaps if it is not a weekend/holiday?)

    Drew, this solution works when I make the following change(minus the static date range):

      LEAD(o.Last_Updated_On, 1, COALESCE(r.Resolved_Date + 1, '9999-12-31')) OVER(PARTITION BY o.Case_ID ORDER BY o.Last_Updated_On) AS Update_Status_End_Dt

    EDIT: I fixed the below issue---I created the temp tables prior to running the code using SELECT... INTO
    (However, I am not sure what #Open_Cases o and #Resolved_Cases r refer to(is this a temp table)?  If so, it was throwing an error...when I changed it to the Open_Cases and Resolved_Cases(the actual physical tables), it created duplicate rows in there(that somehow now can't be deleted??), which is not what I want... Any advice on what to do with that issue? )

    Other than that it looks like the solution works properly...

  • Lynn Pettis - Friday, March 22, 2019 10:55 AM

    matter2003 - Friday, March 22, 2019 10:48 AM

    Lynn Pettis - Friday, March 22, 2019 8:14 AM

    Please post the code for the UDF.  Also, did you actually post enough sample data to cover all the cases you posted in your problem description?  It looks rather lean on that side.  I also asked you use different case ids for each of the different cases you posted.

    As requested, here is the UDF. I believe the cases I posted should be enough to cover any scenario, because additional Case_Id's will be handled in the same way.  But I see what you are saying---the solution is hard to tell if it works in all three cases because when you add data it will only be able to test one of the cases.

    So I will assume the initial data is already loaded from Case 3

    case 1:

    [Case_ID]   [Last_Updated_On] [Contact_Date] [Resolved_Date]
    US2309-2325    3/15/2019         3/15/2019         NULL              

    Case 2:

    [Case_ID]   [Last_Updated_On] [Contact_Date] [Resolved_Date]
    US2309-2326    3/15/2019         3/15/2019         NULL              
    US2309-2326    3/19/2019         3/15/2019         NULL  
    US2309-2326    3/20/2019         3/15/2019         NULL  

    CREATE FUNCTION [CalcAge]

    (

    -- Add the parameters for the function here

    @Start date,

    @End date

    )


    RETURNS int

    AS

    BEGIN

    -- Add the T-SQL statements to compute the return value here RETURN  (SELECT  DATEDIFF(dd, @Start , @End) + 1 )) -  (DATEDIFF(wk, @Start, @End) *2)  -  (SELECT  COUNT(*)  AS NumHolidays FROM Holidays WHERE Holiday_Date  BETWEEN @Start AND @End) -1END

    Holidays is a table that contains dates for holidays(there are none in this example, so that part can be removed). It counts the number of days in the holiday table between the start and end date and then subtracts them from the number of non-weekend days.

    The other two items in the calculation I don't really understand how they work, but I found this solution on stackoverflow and after checking several scenarios, it worked properly, so I used it.  Basically it excludes weekend days from the calculation of the number of days between dates(similar to the NETWORKDAYS function in Excel).  The other solutions talked about  variations of putting every possible day into a table and then checking if each day was a weekend day but I didn't want to do all that, and when I saw this solution provided a way to avoid it, I used it.

    You keep adding additional tables to the requirements.  Now we need your table Holidays if we are to actually help.  Also, I still thing you have left out data for all the cases you posted in your initial post.  If the data you have already posted is to be used for all the cases, I am at a loss.

    Lynn, you don't really need the holidays table, as I explained it is not pertinent to this as there are no holidays in the date ranges I supplied(or even testing with date ranges up to Memorial Day in the US, as there are no holidays until then), and when there are, it will automatically handle it. So it is of no real consequence to this...that part can just be removed.

    I simply made changes to the case ID's of Case 1 and Case 2 in the examples I provided. Case 3 can use the original case 3 information.
    There are 3 situations I need to check to ensure it's working properly:
    1) If the Case ID only has a single [Last_Update_On] date in the open cases and no resolved case date, it returns the dame data for each report date(the dates between the start and end dates, minus weekends)

    2) If the Case ID has multiple [Last_Updated_On] dates(ie, multiple rows for that Case_ID in the open cases table), the returned row will choose the [Last_Updated_On] date that is equal to or less than the [Report_Date]

    3) If the Case ID has a resolved Date in the Resolved Table, it should ONLY return rows with a [Report_Date] LESS THAN the [Resolved_Date] as at this point the case is not longer open, as it has been resolved.

    These are the only 3 scenarios I need to check for and the additional data will check for Scenario 1 above(Case 1 in the last post I made with the updated info) and Scenario 2 above(Case 2 in the last post I made with the updated info). Case 3 can be tested using the full data in the original post(Case 3) 

    Additionally, it needs to be able to handle Dynamic  Date ranges.  The date ranges I gave are an example, but realistically, there will be different date ranges for different reports, and users will be able to pull data based on date ranges they set, so the solution needs to be able to handle the date ranges dynamically as we will not know in advance what those will be for any given solution. However, the same 3 scenarios apply to this no matter what the date range. Once the case is resolved, no additional rows will be returned past the [Resolved_Date] no matter if a 50 year date range was put in. Similarly, until the case is resolved, it will display the row with the [Last_Updated_On] Date for all dates after it(basically just the same row with an incremented [Report_Date].

  • matter2003 - Friday, March 22, 2019 11:22 AM

    Lynn Pettis - Friday, March 22, 2019 10:55 AM

    matter2003 - Friday, March 22, 2019 10:48 AM

    Lynn Pettis - Friday, March 22, 2019 8:14 AM

    Please post the code for the UDF.  Also, did you actually post enough sample data to cover all the cases you posted in your problem description?  It looks rather lean on that side.  I also asked you use different case ids for each of the different cases you posted.

    As requested, here is the UDF. I believe the cases I posted should be enough to cover any scenario, because additional Case_Id's will be handled in the same way.  But I see what you are saying---the solution is hard to tell if it works in all three cases because when you add data it will only be able to test one of the cases.

    So I will assume the initial data is already loaded from Case 3

    case 1:

    [Case_ID]   [Last_Updated_On] [Contact_Date] [Resolved_Date]
    US2309-2325    3/15/2019         3/15/2019         NULL              

    Case 2:

    [Case_ID]   [Last_Updated_On] [Contact_Date] [Resolved_Date]
    US2309-2326    3/15/2019         3/15/2019         NULL              
    US2309-2326    3/19/2019         3/15/2019         NULL  
    US2309-2326    3/20/2019         3/15/2019         NULL  

    CREATE FUNCTION [CalcAge]

    (

    -- Add the parameters for the function here

    @Start date,

    @End date

    )


    RETURNS int

    AS

    BEGIN

    -- Add the T-SQL statements to compute the return value here RETURN  (SELECT  DATEDIFF(dd, @Start , @End) + 1 )) -  (DATEDIFF(wk, @Start, @End) *2)  -  (SELECT  COUNT(*)  AS NumHolidays FROM Holidays WHERE Holiday_Date  BETWEEN @Start AND @End) -1END

    Holidays is a table that contains dates for holidays(there are none in this example, so that part can be removed). It counts the number of days in the holiday table between the start and end date and then subtracts them from the number of non-weekend days.

    The other two items in the calculation I don't really understand how they work, but I found this solution on stackoverflow and after checking several scenarios, it worked properly, so I used it.  Basically it excludes weekend days from the calculation of the number of days between dates(similar to the NETWORKDAYS function in Excel).  The other solutions talked about  variations of putting every possible day into a table and then checking if each day was a weekend day but I didn't want to do all that, and when I saw this solution provided a way to avoid it, I used it.

    You keep adding additional tables to the requirements.  Now we need your table Holidays if we are to actually help.  Also, I still thing you have left out data for all the cases you posted in your initial post.  If the data you have already posted is to be used for all the cases, I am at a loss.

    Lynn, you don't really need the holidays table, as I explained it is not pertinent to this as there are no holidays in the date ranges I supplied(or even testing with date ranges up to Memorial Day in the US, as there are no holidays until then), and when there are, it will automatically handle it. So it is of no real consequence to this...that part can just be removed.

    I simply made changes to the case ID's of Case 1 and Case 2 in the examples I provided. Case 3 can use the original case 3 information.
    There are 3 situations I need to check to ensure it's working properly:
    1) If the Case ID only has a single [Last_Update_On] date in the open cases and no resolved case date, it returns the dame data for each report date(the dates between the start and end dates, minus weekends)

    2) If the Case ID has multiple [Last_Updated_On] dates(ie, multiple rows for that Case_ID in the open cases table), the returned row will choose the [Last_Updated_On] date that is equal to or less than the [Report_Date]

    3) If the Case ID has a resolved Date in the Resolved Table, it should ONLY return rows with a [Report_Date] LESS THAN the [Resolved_Date] as at this point the case is not longer open, as it has been resolved.

    These are the only 3 scenarios I need to check for and the additional data will check for Scenario 1 above(Case 1 in the last post I made with the updated info) and Scenario 2 above(Case 2 in the last post I made with the updated info). Case 3 can be tested using the full data in the original post(Case 3) 

    Additionally, it needs to be able to handle Dynamic  Date ranges.  The date ranges I gave are an example, but realistically, there will be different date ranges for different reports, and users will be able to pull data based on date ranges they set, so the solution needs to be able to handle the date ranges dynamically as we will not know in advance what those will be for any given solution. However, the same 3 scenarios apply to this no matter what the date range. Once the case is resolved, no additional rows will be returned past the [Resolved_Date] no matter if a 50 year date range was put in. Similarly, until the case is resolved, it will display the row with the [Last_Updated_On] Date for all dates after it(basically just the same row with an incremented [Report_Date].

    I'm done.  Others may be able to help but without everything I asked for I can't help as i am very visual and seeing what I have to start with and what i need to come up with I can figure out what needs to happen.

  • Lynn Pettis - Friday, March 22, 2019 11:39 AM

    matter2003 - Friday, March 22, 2019 11:22 AM

    Lynn Pettis - Friday, March 22, 2019 10:55 AM

    matter2003 - Friday, March 22, 2019 10:48 AM

    Lynn Pettis - Friday, March 22, 2019 8:14 AM

    Please post the code for the UDF.  Also, did you actually post enough sample data to cover all the cases you posted in your problem description?  It looks rather lean on that side.  I also asked you use different case ids for each of the different cases you posted.

    As requested, here is the UDF. I believe the cases I posted should be enough to cover any scenario, because additional Case_Id's will be handled in the same way.  But I see what you are saying---the solution is hard to tell if it works in all three cases because when you add data it will only be able to test one of the cases.

    So I will assume the initial data is already loaded from Case 3

    case 1:

    [Case_ID]   [Last_Updated_On] [Contact_Date] [Resolved_Date]
    US2309-2325    3/15/2019         3/15/2019         NULL              

    Case 2:

    [Case_ID]   [Last_Updated_On] [Contact_Date] [Resolved_Date]
    US2309-2326    3/15/2019         3/15/2019         NULL              
    US2309-2326    3/19/2019         3/15/2019         NULL  
    US2309-2326    3/20/2019         3/15/2019         NULL  

    CREATE FUNCTION [CalcAge]

    (

    -- Add the parameters for the function here

    @Start date,

    @End date

    )


    RETURNS int

    AS

    BEGIN

    -- Add the T-SQL statements to compute the return value here RETURN  (SELECT  DATEDIFF(dd, @Start , @End) + 1 )) -  (DATEDIFF(wk, @Start, @End) *2)  -  (SELECT  COUNT(*)  AS NumHolidays FROM Holidays WHERE Holiday_Date  BETWEEN @Start AND @End) -1END

    Holidays is a table that contains dates for holidays(there are none in this example, so that part can be removed). It counts the number of days in the holiday table between the start and end date and then subtracts them from the number of non-weekend days.

    The other two items in the calculation I don't really understand how they work, but I found this solution on stackoverflow and after checking several scenarios, it worked properly, so I used it.  Basically it excludes weekend days from the calculation of the number of days between dates(similar to the NETWORKDAYS function in Excel).  The other solutions talked about  variations of putting every possible day into a table and then checking if each day was a weekend day but I didn't want to do all that, and when I saw this solution provided a way to avoid it, I used it.

    You keep adding additional tables to the requirements.  Now we need your table Holidays if we are to actually help.  Also, I still thing you have left out data for all the cases you posted in your initial post.  If the data you have already posted is to be used for all the cases, I am at a loss.

    Lynn, you don't really need the holidays table, as I explained it is not pertinent to this as there are no holidays in the date ranges I supplied(or even testing with date ranges up to Memorial Day in the US, as there are no holidays until then), and when there are, it will automatically handle it. So it is of no real consequence to this...that part can just be removed.

    I simply made changes to the case ID's of Case 1 and Case 2 in the examples I provided. Case 3 can use the original case 3 information.
    There are 3 situations I need to check to ensure it's working properly:
    1) If the Case ID only has a single [Last_Update_On] date in the open cases and no resolved case date, it returns the dame data for each report date(the dates between the start and end dates, minus weekends)

    2) If the Case ID has multiple [Last_Updated_On] dates(ie, multiple rows for that Case_ID in the open cases table), the returned row will choose the [Last_Updated_On] date that is equal to or less than the [Report_Date]

    3) If the Case ID has a resolved Date in the Resolved Table, it should ONLY return rows with a [Report_Date] LESS THAN the [Resolved_Date] as at this point the case is not longer open, as it has been resolved.

    These are the only 3 scenarios I need to check for and the additional data will check for Scenario 1 above(Case 1 in the last post I made with the updated info) and Scenario 2 above(Case 2 in the last post I made with the updated info). Case 3 can be tested using the full data in the original post(Case 3) 

    Additionally, it needs to be able to handle Dynamic  Date ranges.  The date ranges I gave are an example, but realistically, there will be different date ranges for different reports, and users will be able to pull data based on date ranges they set, so the solution needs to be able to handle the date ranges dynamically as we will not know in advance what those will be for any given solution. However, the same 3 scenarios apply to this no matter what the date range. Once the case is resolved, no additional rows will be returned past the [Resolved_Date] no matter if a 50 year date range was put in. Similarly, until the case is resolved, it will display the row with the [Last_Updated_On] Date for all dates after it(basically just the same row with an incremented [Report_Date].

    I'm done.  Others may be able to help but without everything I asked for I can't help as i am very visual and seeing what I have to start with and what i need to come up with I can figure out what needs to happen.

    Lynn,

    I'm not sure what else you needed as I already gave you everything you asked for(minus the holiday part which has no bearing on the solution as I already have hat part taken care of by myself and its working).  Drew's solution is 100% working other than being able to handle a dynamic date range.

  • matter2003 - Friday, March 22, 2019 11:03 AM

    drew.allen - Friday, March 22, 2019 9:06 AM

    Part of the problem is that your UDF is a scalar function (not a table-valued function) given the way that you are calling it.  I've substituted a Table Value Constructor for your function.
    PS: Scalar functions and table-valued functions are mutually exclusive.  You cannot have a scalar table-valued function.

    As Lynn mentioned, your sample data only covers one case.  I added a second case where the case had not yet been resolved.

    I believe that this gives you what you need.  It is very loosely based on work by Itzik Ben-Gan on packing intervals.

    WITH Case_Statuses AS
    (
        SELECT
            o.Case_ID
        ,    o.Contact_Date
        ,    o.Last_Updated_On AS Update_Status_Begin_Date
        ,    LEAD(o.Last_Updated_On, 1, COALESCE(r.Resolved_Date, '9999-12-31')) OVER(PARTITION BY o.Case_ID ORDER BY o.Last_Updated_On) AS Update_Status_End_Dt
        FROM #Open_Cases o
        LEFT OUTER JOIN #Resolved_Cases r
            ON o.Case_ID = r.Case_ID
    )

    SELECT *
    FROM Case_Statuses cs
    CROSS APPLY ( VALUES(1), (2), (3), (4), (5), (6) ) CalcAge(Age)
    CROSS APPLY ( VALUES(DATEADD(DAY, CalcAge.Age - 1, @Report_Start_Date) ) ) rd(Report_Date)
    WHERE cs.Update_Status_Begin_Date <= rd.Report_Date
        AND rd.Report_Date < cs.Update_Status_End_Dt
        AND rd.Report_Date BETWEEN @Report_Start_Date AND @Report_End_Date

    Drew

    Like the other post, the date selection range needs to be able to handle a dynamic date range...this date range will change, it is not going to remain the same and will vary by report and/or user entered values...is there a way to make the date range dynamic? (with the caveat it will skip over weekend and holidays and not include those---I can make a version of my calc age function that will return a date perhaps if it is not a weekend/holiday?)

    Drew, this solution works when I make the following change(minus the static date range):

      LEAD(o.Last_Updated_On, 1, COALESCE(r.Resolved_Date + 1, '9999-12-31')) OVER(PARTITION BY o.Case_ID ORDER BY o.Last_Updated_On) AS Update_Status_End_Dt

    However, I am not sure what #Open_Cases o and #Resolved_Cases r refer to(is this a temp table)?  If so, it was throwing an error...when I changed it to the Open_Cases and Resolved_Cases(the actual physical tables), it created duplicate rows in there(that somehow now can't be deleted??), which is not what I want...

    Any advice on what to do with that issue?

    Other than that it looks like the solution works properly...

    The problem here is that you didn't try to understand what the code is doing before deploying it to your own environment.  Yes, I used temp tables.  I don't want to create permanent tables on my database just to help you with a problem, so I converted all of the permanent tables to temp tables.  I didn't think it was necessary to explicitly tell you to change them back.  So, for future reference, you'll need to change these temp tables back to your own permanent tables.

    To make the dates dynamic you'll need to replace these two lines of code
    /*  First line to replace.  */
    CROSS APPLY ( VALUES(DATEADD(DAY, CalcAge.Age - 1, @Report_Start_Date) ) ) rd(Report_Date)

    /* Second line to replace. */
      AND rd.Report_Date BETWEEN @Report_Start_Date AND @Report_End_Date

    with the following code.
    /*  First replacement line.  */
    CROSS APPLY ( VALUES(DATEADD(DAY, CalcAge.Age - 1, @Report_Start_Date) ) ) rd(Report_Date)

    /* Second replacement line. */
      AND rd.Report_Date BETWEEN @Report_Start_Date AND @Report_End_Date

    Drew

    J. Drew Allen
    Business Intelligence Analyst
    Philadelphia, PA

  • drew.allen - Friday, March 22, 2019 12:04 PM

    matter2003 - Friday, March 22, 2019 11:03 AM

    drew.allen - Friday, March 22, 2019 9:06 AM

    Part of the problem is that your UDF is a scalar function (not a table-valued function) given the way that you are calling it.  I've substituted a Table Value Constructor for your function.
    PS: Scalar functions and table-valued functions are mutually exclusive.  You cannot have a scalar table-valued function.

    As Lynn mentioned, your sample data only covers one case.  I added a second case where the case had not yet been resolved.

    I believe that this gives you what you need.  It is very loosely based on work by Itzik Ben-Gan on packing intervals.

    WITH Case_Statuses AS
    (
        SELECT
            o.Case_ID
        ,    o.Contact_Date
        ,    o.Last_Updated_On AS Update_Status_Begin_Date
        ,    LEAD(o.Last_Updated_On, 1, COALESCE(r.Resolved_Date, '9999-12-31')) OVER(PARTITION BY o.Case_ID ORDER BY o.Last_Updated_On) AS Update_Status_End_Dt
        FROM #Open_Cases o
        LEFT OUTER JOIN #Resolved_Cases r
            ON o.Case_ID = r.Case_ID
    )

    SELECT *
    FROM Case_Statuses cs
    CROSS APPLY ( VALUES(1), (2), (3), (4), (5), (6) ) CalcAge(Age)
    CROSS APPLY ( VALUES(DATEADD(DAY, CalcAge.Age - 1, @Report_Start_Date) ) ) rd(Report_Date)
    WHERE cs.Update_Status_Begin_Date <= rd.Report_Date
        AND rd.Report_Date < cs.Update_Status_End_Dt
        AND rd.Report_Date BETWEEN @Report_Start_Date AND @Report_End_Date

    Drew

    Like the other post, the date selection range needs to be able to handle a dynamic date range...this date range will change, it is not going to remain the same and will vary by report and/or user entered values...is there a way to make the date range dynamic? (with the caveat it will skip over weekend and holidays and not include those---I can make a version of my calc age function that will return a date perhaps if it is not a weekend/holiday?)

    Drew, this solution works when I make the following change(minus the static date range):

      LEAD(o.Last_Updated_On, 1, COALESCE(r.Resolved_Date + 1, '9999-12-31')) OVER(PARTITION BY o.Case_ID ORDER BY o.Last_Updated_On) AS Update_Status_End_Dt

    However, I am not sure what #Open_Cases o and #Resolved_Cases r refer to(is this a temp table)?  If so, it was throwing an error...when I changed it to the Open_Cases and Resolved_Cases(the actual physical tables), it created duplicate rows in there(that somehow now can't be deleted??), which is not what I want...

    Any advice on what to do with that issue?

    Other than that it looks like the solution works properly...

    The problem here is that you didn't try to understand what the code is doing before deploying it to your own environment.  Yes, I used temp tables.  I don't want to create permanent tables on my database just to help you with a problem, so I converted all of the permanent tables to temp tables.  I didn't think it was necessary to explicitly tell you to change them back.  So, for future reference, you'll need to change these temp tables back to your own permanent tables.

    To make the dates dynamic you'll need to replace these two lines of code
    /*  First line to replace.  */
    CROSS APPLY ( VALUES(DATEADD(DAY, CalcAge.Age - 1, @Report_Start_Date) ) ) rd(Report_Date)

    /* Second line to replace. */
      AND rd.Report_Date BETWEEN @Report_Start_Date AND @Report_End_Date

    with the following code.
    /*  First replacement line.  */
    CROSS APPLY ( VALUES(DATEADD(DAY, CalcAge.Age - 1, @Report_Start_Date) ) ) rd(Report_Date)

    /* Second replacement line. */
      AND rd.Report_Date BETWEEN @Report_Start_Date AND @Report_End_Date

    Drew

    Drew,

    Apologies, I actually edited the initial reply to your first post that I had solved the temp table thing.  I also added in "Drop If Exists" logic to it as well so it will recreate the temp tables when it runs.

    I'm a little confused...it appears the original code is the same as the replacement code? 

    From what I am testing, it appears the following line is what is controlling the number of days that return:

    CROSS APPLY ( VALUES(1), (2), (3), (4), (5) ) CalcAge(Age)

    When I add in (6), (7), (8), etc it continues to return an additional day for each one added---I'm unsure how to return the number of days between the start and end date there automatically(minus weekends/holidays)

Viewing 15 posts - 1 through 15 (of 20 total)

You must be logged in to reply to this topic. Login to reply