Splitting/Pivot Data from a Date Range using SQL

后端 未结 2 612
执念已碎
执念已碎 2021-01-16 18:44

Hi I have a problem with regarding on split/pivot dates

Here is my query

select Name
     , Start
     , End 
  from Employees 
 where St         


        
相关标签:
2条回答
  • 2021-01-16 19:02

    you need to generate all the dates. i did this here by using a cte. i then join this date range with your data and receive the sought result.

    with DateRange AS
    (
        SELECT CAST('1/27/2014' as DATEtime) DateValue
         UNION ALL
        SELECT dateadd(dd,1,DateValue)
          FROM DateRange
         WHERE dateadd(dd,1,DateValue) <= CAST('3/31/2014' as datetime)
    )
    select name
         , DateValue
      from Employees
      join DateRange
        on start <= DateValue
       and [end] >= datevalue
     order by 
           name
         , DateValue
    


    outdated after your updated question i would go about it with a simple union:

    select Name
         , Start
      from Employees 
     where Start >= '1/27/2014' 
       and End <= '1/31/2014'
     union all
    select Name
         , End
      from Employees 
     where Start >= '1/27/2014' 
       and End <= '1/31/2014'
     order by
           Name
    
    0 讨论(0)
  • 2021-01-16 19:16

    First, create the table as -

    USE `Test`;
    CREATE  TABLE `test`.`Tbl_Sample_Data` (
      `Name` VARCHAR(50) NULL ,    
      `Start` DATETIME NULL ,
      `End` DATETIME NULL );
    

    Insert rows using -

    INSERT INTO `test`.`tbl_sample_data`
    (`End`,
    `Name`,
    `Start`)
    VALUES
    (
    'PutEndDateHere',
    'PutNameHere',
    'PutStartDateHere'
    );
    

    Here, dates should be in yyyy-MM-dd format, otherwise you get error 1292.

    Use this query to get what you want.

    SELECT `Name`,'Start' AS colName, `Start` AS value FROM test.tbl_sample_data
    UNION ALL
    SELECT `Name`,'End' AS colName, `End` AS value FROM test.tbl_sample_data
    ORDER BY `Name` ASC
    

    Note that column names whose name is the same as a keyword must be enclosed in backticks. Eg. Example Name. Otherwise, you get error.

    0 讨论(0)
提交回复
热议问题