CREATE TABLE [dbo].[Test]
(
[ID] [int] NOT NULL,
[SchedId] [int] NOT NULL,
[ActivityCoded] [int] NULL,
[RegnNo] [int] NULL,
[Region] [varchar](50) NULL,
[TrDate] [datetime] NULL,
[Morning] [int] NULL,
[Evening] [int] NULL,
[Night] [int] NULL,
CONSTRAINT [PK_Test]
PRIMARY KEY CLUSTERED ([ID] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
INSERT INTO [dbo].[Test] ([ID], [SchedId], [ActivityCoded], [RegnNo], [Region], [TrDate], [Morning], [Evening], [Night])
VALUES (1, 2505, 1, 500, N'DRYDEN', CAST(N'2019-11-20 00:00:00.000' AS DateTime), 4, 5, 20)
INSERT INTO [dbo].[Test] ([ID], [SchedId], [ActivityCoded], [RegnNo], [Region], [TrDate], [Morning], [Evening], [Night])
VALUES (2, 2505, 1, 500, N'DRYDEN', CAST(N'2019-11-21 00:00:00.000' AS DateTime), 15, 2, 2)
INSERT INTO [dbo].[Test] ([ID], [SchedId], [ActivityCoded], [RegnNo], [Region], [TrDate], [Morning], [Evening], [Night])
VALUES (3, 2505, 1, 500, N'DRYDEN', CAST(N'2019-11-22 00:00:00.000' AS DateTime), 14, 34, 34)
INSERT INTO [dbo].[Test] ([ID], [SchedId], [ActivityCoded], [RegnNo], [Region], [TrDate], [Morning], [Evening], [Night])
VALUES (4, 2505, 1, 500, N'DRYDEN', CAST(N'2019-11-23 00:00:00.000' AS DateTime), 45, 5, 54)
INSERT INTO [dbo].[Test] ([ID], [SchedId], [ActivityCoded], [RegnNo], [Region], [TrDate], [Morning], [Evening], [Night])
VALUES (5, 2505, 1, 500, N'DRYDEN', CAST(N'2019-11-24 00:00:00.000' AS DateTime), 34, 23, 34)
INSERT INTO [dbo].[Test] ([ID], [SchedId], [ActivityCoded], [RegnNo], [Region], [TrDate], [Morning], [Evening], [Night])
VALUES (6, 2505, 2, 500, N'RIO', CAST(N'2019-11-21 00:00:00.000' AS DateTime), 1, 7, 0)
INSERT INTO [dbo].[Test] ([ID], [SchedId], [ActivityCoded], [RegnNo], [Region], [TrDate], [Morning], [Evening], [Night])
VALUES (7, 2505, 2, 500, N'RIO', CAST(N'2019-11-22 00:00:00.000' AS DateTime), 2, 8, 9)
INSERT INTO [dbo].[Test] ([ID], [SchedId], [ActivityCoded], [RegnNo], [Region], [TrDate], [Morning], [Evening], [Night])
VALUES (8, 2505, 2, 500, N'RIO', CAST(N'2019-11-23 00:00:00.000' AS DateTime), 3, 5, 6)
INSERT INTO [dbo].[Test] ([ID], [SchedId], [ActivityCoded], [RegnNo], [Region], [TrDate], [Morning], [Evening], [Night])
VALUES (9, 2505, 2, 500, N'RIO', CAST(N'2019-11-24 00:00:00.000' AS DateTime), 4, 4, 5)
INSERT INTO [dbo].[Test] ([ID], [SchedId], [ActivityCoded], [RegnNo], [Region], [TrDate], [Morning], [Evening], [Night])
VALUES (10, 2505, 2, 500, N'RIO', CAST(N'2019-11-25 00:00:00.000' AS DateTime), 5, 7, 4)
Мое требование - мне нужно одновременно преобразовать TrDate
в столбцы Утренний, Вечерний, Ночной столбцы в строки типа
+---------------+---------+--------+--------+----------+------------+------------+------------+------------+------------+
| ActivityCoded | SchedId | RegnNo | Region | Session | 11/20/2019 | 11/21/2019 | 11/22/2019 | 11/23/2019 | 11/24/2019 |
+---------------+---------+--------+--------+----------+------------+------------+------------+------------+------------+
| 1 | 2505 | 500 | Dryden | Morning | 4 | 15 | 14 | 45 | 34 |
| 1 | 2505 | 500 | Dryden | Evening | 5 | 2 | 34 | 5 | 23 |
| 1 | 2505 | 500 | Dryden | Night | 20 | 2 | 34 | 54 | 34 |
| 2 | 2505 | 500 | RIO | Morning | 1 | 2 | 3 | 4 | 5 |
| 2 | 2505 | 500 | RIO | Evening | 7 | 8 | 5 | 4 | 7 |
| 2 | 2505 | 500 | RIO | Night | 0 | 9 | 6 | 5 | 4 |
+---------------+---------+--------+--------+----------+------------+------------+------------+------------+------------+
Я пробовал Cross Apply
, Pivot
, но я не могу получить желаемый результат