【发布时间】:2020-11-09 11:19:58
【问题描述】:
一个包裹可以在 2 个日期之间预订,预订状态由 2 个用户更新(0 为未确认,1 为待确认,2 为已确认)。 我正在尝试显示某个包在一段时间内的状态。
我们有下表:
CREATE TABLE [dbo].[Packages](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Name] [varchar](50) NULL,
CONSTRAINT [PK_Packages] 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
CREATE TABLE [dbo].[Users](
[ID] [int] IDENTITY(1,1) NOT NULL,
[name] [varchar](50) NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Bookings](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[PackageID] [int] NULL,
[fromDate] [datetime] NULL,
[toDate] [datetime] NULL,
[status] [int] NULL,
[user1] [int] NULL,
[user2] [int] NULL,
CONSTRAINT [PK_Bookings] 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
一些测试数据:
insert into Packages(Name) values ('pack1')
insert into Packages(Name) values ('pack2')
insert into Packages(Name) values ('pack3')
insert into Packages(Name) values ('pack4')
insert into Packages(Name) values ('pack5')
insert into users(name) values('operator1')
insert into users(name) values('operator2')
insert into users(name) values('admin1')
insert into users(name) values('admin2')
insert into bookings(PackageID, fromDate, toDate, status, user1, user2) values (1,'7/1/2020','7/11/2020',0,1,null)
insert into bookings(PackageID, fromDate, toDate, status, user1, user2) values (1,'7/15/2000','7/18/2020',1,2,3)
insert into bookings(PackageID, fromDate, toDate, status, user1, user2) values (2,'7/6/2020','7/10/2020',1,1,4)
insert into bookings(PackageID, fromDate, toDate, status, user1, user2) values (2,'7/20/2000','7/25/2020',0,2,null)
insert into bookings(PackageID, fromDate, toDate, status, user1, user2) values (3,'7/13/2020','7/13/2020',2,1,3)
insert into bookings(PackageID, fromDate, toDate, status, user1, user2) values (3,'7/24/2020','7/30/2020',2,2,3)
insert into bookings(PackageID, fromDate, toDate, status, user1, user2) values (4,'7/5/2020','7/16/2020',2,1,4)
insert into bookings(PackageID, fromDate, toDate, status, user1, user2) values (5,'7/2/2020','7/8/2020',1,1,3)
insert into bookings(PackageID, fromDate, toDate, status, user1, user2) values (5,'7/22/2020','7/30/2020',1,2,4)
我正在尝试实现这样的目标:显示 2020 年 7 月的预订状态
Packages - 7/1/2020 - 7/2/2020 - 7/3/2020 - 7/4/2020 - 7/5/2020 - 7/6/2020 - 7/7/2020 - 7/8/2020 ...
1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 ...
2 - - - - - - 1 - 1 - 1 ...
3 - - - - - - - - ...
4 - - - - - 2 - 2 - 2 - 2 ...
5 - - 1 - 1 - 1 - 1 - 1 - 1 - 1 ...
【问题讨论】:
标签: sql sql-server join pivot recursive-query