【发布时间】:2024-04-28 19:30:01
【问题描述】:
我在表格中有如下数据。这只是一个只有1个AdmissionNo的样本数据,真实数据可能有数百个有自己的集合。所以我想根据 AdmissionNo 和 WardCode 对行进行分组,这意味着 WardCode 为“KINT”的前 13 行的 grpValue 应该为 1,接下来的两行为 2,然后是 1,依此类推。
CREATE TABLE [dbo].[tbl_H](
[AdmissionNo] [nvarchar](50) NULL,
[WardCode] [nvarchar](255) NULL,
[AdmissionDateTime] [datetime] NULL,
[DischargeDateTime] [datetime] NULL,
[date] [datetime] NULL
) ON [PRIMARY]
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KINT', CAST(N'2016-06-29 01:59:00.000' AS DateTime), CAST(N'2016-07-11 17:44:00.000' AS DateTime), CAST(N'2016-06-29 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KINT', CAST(N'2016-06-29 01:59:00.000' AS DateTime), CAST(N'2016-07-11 17:44:00.000' AS DateTime), CAST(N'2016-06-30 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KINT', CAST(N'2016-06-29 01:59:00.000' AS DateTime), CAST(N'2016-07-11 17:44:00.000' AS DateTime), CAST(N'2016-07-01 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KINT', CAST(N'2016-06-29 01:59:00.000' AS DateTime), CAST(N'2016-07-11 17:44:00.000' AS DateTime), CAST(N'2016-07-02 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KINT', CAST(N'2016-06-29 01:59:00.000' AS DateTime), CAST(N'2016-07-11 17:44:00.000' AS DateTime), CAST(N'2016-07-03 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KINT', CAST(N'2016-06-29 01:59:00.000' AS DateTime), CAST(N'2016-07-11 17:44:00.000' AS DateTime), CAST(N'2016-07-04 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KINT', CAST(N'2016-06-29 01:59:00.000' AS DateTime), CAST(N'2016-07-11 17:44:00.000' AS DateTime), CAST(N'2016-07-05 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KINT', CAST(N'2016-06-29 01:59:00.000' AS DateTime), CAST(N'2016-07-11 17:44:00.000' AS DateTime), CAST(N'2016-07-06 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KINT', CAST(N'2016-06-29 01:59:00.000' AS DateTime), CAST(N'2016-07-11 17:44:00.000' AS DateTime), CAST(N'2016-07-07 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KINT', CAST(N'2016-06-29 01:59:00.000' AS DateTime), CAST(N'2016-07-11 17:44:00.000' AS DateTime), CAST(N'2016-07-08 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KINT', CAST(N'2016-06-29 01:59:00.000' AS DateTime), CAST(N'2016-07-11 17:44:00.000' AS DateTime), CAST(N'2016-07-09 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KINT', CAST(N'2016-06-29 01:59:00.000' AS DateTime), CAST(N'2016-07-11 17:44:00.000' AS DateTime), CAST(N'2016-07-10 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KINT', CAST(N'2016-06-29 01:59:00.000' AS DateTime), CAST(N'2016-07-11 17:44:00.000' AS DateTime), CAST(N'2016-07-11 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-11 17:44:00.000' AS DateTime), CAST(N'2016-07-12 03:38:00.000' AS DateTime), CAST(N'2016-07-11 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-11 17:44:00.000' AS DateTime), CAST(N'2016-07-12 03:38:00.000' AS DateTime), CAST(N'2016-07-12 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KEHH', CAST(N'2016-07-12 03:38:00.000' AS DateTime), CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-07-12 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-07-12 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-07-13 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-07-14 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-07-15 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-07-16 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-07-17 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-07-18 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-07-19 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-07-20 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-07-21 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-07-22 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-07-23 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-07-24 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-07-25 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-07-26 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-07-27 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-07-28 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-07-29 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-07-30 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-07-31 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-08-01 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-08-02 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-08-03 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-08-04 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-08-05 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-08-06 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-08-07 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-08-08 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-08-09 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-08-10 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-08-11 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-08-12 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-08-13 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-08-14 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-08-15 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-08-16 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-08-17 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCAR', CAST(N'2016-07-12 13:25:00.000' AS DateTime), CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-08-18 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCH2', CAST(N'2016-08-18 10:59:00.000' AS DateTime), CAST(N'2016-08-18 13:35:00.000' AS DateTime), CAST(N'2016-08-18 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCH2', CAST(N'2016-08-18 13:35:00.000' AS DateTime), CAST(N'2016-08-24 18:56:00.000' AS DateTime), CAST(N'2016-08-18 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCH2', CAST(N'2016-08-18 13:35:00.000' AS DateTime), CAST(N'2016-08-24 18:56:00.000' AS DateTime), CAST(N'2016-08-19 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCH2', CAST(N'2016-08-18 13:35:00.000' AS DateTime), CAST(N'2016-08-24 18:56:00.000' AS DateTime), CAST(N'2016-08-20 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCH2', CAST(N'2016-08-18 13:35:00.000' AS DateTime), CAST(N'2016-08-24 18:56:00.000' AS DateTime), CAST(N'2016-08-21 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCH2', CAST(N'2016-08-18 13:35:00.000' AS DateTime), CAST(N'2016-08-24 18:56:00.000' AS DateTime), CAST(N'2016-08-22 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCH2', CAST(N'2016-08-18 13:35:00.000' AS DateTime), CAST(N'2016-08-24 18:56:00.000' AS DateTime), CAST(N'2016-08-23 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCH2', CAST(N'2016-08-18 13:35:00.000' AS DateTime), CAST(N'2016-08-24 18:56:00.000' AS DateTime), CAST(N'2016-08-24 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KICA - IC', CAST(N'2016-08-24 18:56:00.000' AS DateTime), CAST(N'2016-08-26 13:23:00.000' AS DateTime), CAST(N'2016-08-24 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KICA - IC', CAST(N'2016-08-24 18:56:00.000' AS DateTime), CAST(N'2016-08-26 13:23:00.000' AS DateTime), CAST(N'2016-08-25 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KICA - IC', CAST(N'2016-08-24 18:56:00.000' AS DateTime), CAST(N'2016-08-26 13:23:00.000' AS DateTime), CAST(N'2016-08-26 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCH2', CAST(N'2016-08-26 13:23:00.000' AS DateTime), CAST(N'2016-08-26 13:30:00.000' AS DateTime), CAST(N'2016-08-26 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCH2', CAST(N'2016-08-26 13:30:00.000' AS DateTime), CAST(N'2016-08-30 15:12:00.000' AS DateTime), CAST(N'2016-08-26 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCH2', CAST(N'2016-08-26 13:30:00.000' AS DateTime), CAST(N'2016-08-30 15:12:00.000' AS DateTime), CAST(N'2016-08-27 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCH2', CAST(N'2016-08-26 13:30:00.000' AS DateTime), CAST(N'2016-08-30 15:12:00.000' AS DateTime), CAST(N'2016-08-28 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCH2', CAST(N'2016-08-26 13:30:00.000' AS DateTime), CAST(N'2016-08-30 15:12:00.000' AS DateTime), CAST(N'2016-08-29 00:00:00.000' AS DateTime))
GO
INSERT [dbo].[tbl_H] ([AdmissionNo], [WardCode], [AdmissionDateTime], [DischargeDateTime], [date]) VALUES (N'0000001742', N'KCH2', CAST(N'2016-08-26 13:30:00.000' AS DateTime), CAST(N'2016-08-30 15:12:00.000' AS DateTime), CAST(N'2016-08-30 00:00:00.000' AS DateTime))
GO
但问题是,对于相同的 AdmissinoNo,WardCode 在后面的行中再次重复。那么如何将这些行作为不同的 GroupValue,因为当我尝试对它们进行分组时,即使它们之间存在任何其他 WardCode,它们也会组合在一起。可以根据 AdmissionDateTime 然后 DischargeDateTime 对行进行排序。 首先我通过“ROW_NUMBER()OVER(ORDER BY AdmissionNo,AdmissionDateTime,DischargeDateTime) as rownum”在列表中添加行号,然后进行以下查询:
;WITH cte as (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY AdmissionNo,WardCode ORDER BY rownum) as rn,
rownum - ROW_NUMBER() OVER (PARTITION BY AdmissionNo,WardCode ORDER BY rownum) as grp
FROM tbl_h
)
SELECT *, DENSE_RANK() OVER (ORDER BY grp) as new_Grp
FROM cte
但这也将所有具有相同名称的病房代码分组,即使它们之间有任何其他病房代码。
【问题讨论】:
-
我认为您的查询工作正常。加
order by rownum即可查看
标签: sql sql-server tsql sql-server-2014