Sql записей для выбора - PullRequest
       1

Sql записей для выбора

0 голосов
/ 19 сентября 2019

Мне нужно, чтобы значения отображались в день, даже если нет записей

CREATE PROCEDURE Robotics.GetData
    @CelulaId INT,
    @Start DATETIME,
    @End DATETIME
  AS
  BEGIN

      SELECT 
        x.Date, 
        r.Shift, 
        r.Cell,
        r.Income
      FROM (
          SELECT x.Date
          FROM 
          (
              SELECT Date FROM DateDimension dd
              WHERE CONVERT(DATE, dd.Date) >= @Start 
              AND CONVERT(DATE, dd.Date) <= @End
          ) x
      ) x
      LEFT JOIN Records r
      ON x.Date = CONVERT(DATE, r.CreatedOn)
      AND r.Cell= '3.9.Y'    

  END   

Проблема в том, что я хотел бы показать все доступные смены в день, даже если для этого сдвига нет записей для этого сдвигаday.

Чтобы получить дни, которые я использовал, оставьте соединение с таблицей календаря.Это мой текущий результат

Date        Shift   Cell    Income  
2019-09-13  Yellow  3.9.Y   100
2019-09-13  Blue    3.9.Y   200
2019-09-13  Green   3.9.Y   450
2019-09-14  NULL    NULL    NULL
2019-09-15  NULL    NULL    NULL
2019-09-16  Yellow  3.9.Y   200
2019-09-16  Green   3.9.Y   300
2019-09-17  Yellow  3.9.Y   250
2019-09-17  Blue    3.9.Y   100
2019-09-17  Green   3.9.Y   300
2019-09-18  Yellow  3.9.Y   200 
2019-09-18  Blue    3.9.Y   500
2019-09-18  Green   3.9.Y   750
2019-09-19  Blue    3.9.Y   250

Я бы хотел, чтобы что-то подобное появилось

Date        Shift   Cell    Income
2019-09-13  Yellow  3.9.Y   100
2019-09-13  Blue    3.9.Y   200
2019-09-13  Green   3.9.Y   450  
2019-09-14  Yellow  3.9.Y   0 // Null record
2019-09-14  Blue    3.9.Y   0 // Null record
2019-09-14  Green   3.9.Y   0 // Null record
2019-09-15  Yellow  3.9.Y   0 // Null record
2019-09-15  Blue    3.9.Y   0 // Null record
2019-09-15  Green   3.9.Y   0 // Null record
2019-09-16  Yellow  3.9.Y   200
2019-09-16  Blue    3.9.Y   0 // Null record
2019-09-16  Green   3.9.Y   300
2019-09-17  Yellow  3.9.Y   250
2019-09-17  Blue    3.9.Y   100
2019-09-17  Green   3.9.Y   300
2019-09-18  Yellow  3.9.Y   200
2019-09-18  Blue    3.9.Y   500
2019-09-18  Green   3.9.Y   750
2019-09-19  Yellow  3.9.Y   0 // Null record    
2019-09-19  Blue    3.9.Y   250
2019-09-19  Yellow  3.9.Y   0 // Null record


CREATE TABLE Shifts
(
    Id INT,
    Name NVARCHAR(20)
)

CREATE TABLE Cells
(
    Id INT,
    Name NVARCHAR(20)
)

CREATE TABLE Records
(
    Id INT,
    CreatedOn DATETIME,
    Shift NVARCHAR(10),
    Cell NVARCHAR(10)
    Income INT
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...