公共汽车和乘客到达车站。如果某时间有一辆公共汽车到达车站tbus
,并且某时间有一名乘客到达tpassenger where tpassenger <= tbus
,则该乘客将尝试使用第一辆未超出容量的可用公共汽车。
如果公交车到达车站时等待的乘客数量超过了其容量capacity
,则只有capacity
乘客才会乘坐公交车。
我想输出每辆公交车上出现的用户(如果两个乘客同时到达,则应优先考虑passenger_id值较小的乘客)。
输入:
巴士表:
总线 ID | 到达时间 | 容量 |
---|---|---|
1 | 2 | 1 |
2 | 4 | 10 |
3 | 7 | 2 |
旅客表:
乘客 ID | 到达时间 |
---|---|
11 | 1 |
12 | 1 |
13 | 5 |
14 | 6 |
15 | 7 |
输出:
总线 ID | 容量 | b_到达 | 点 | 乘客 ID | p_到达 |
---|---|---|---|---|---|
1 | 1 | 2 | 1 | 11 | 1 |
2 | 10 | 4 | 1 | 12 | 1 |
2 | 10 | 4 | 2 | 无效的 | 无效的 |
2 | 10 | 4 | 3 | 无效的 | 无效的 |
2 | 10 | 4 … |
我有一个表单位
单位名称 |
---|
单元1 |
2b单元 |
2c单元 |
单元2a |
单元10 |
单元3a |
3c单元 |
第11单元 |
我想排序相同
单位名称 |
---|
单元1 |
单元2a |
2b单元 |
2c单元 |
单元3a |
3c单元 |
单元10 |
第11单元 |
我们如何在 t-sql 中实现这一点?
数据定义语言
create table units (unitname varchar(20))
insert into units values ('unit 1'),('unit 2b'),('unit 2c'),
('unit 2a'),('unit 10'),('unit 3a'),('unit 3c'),('unit 11')
Run Code Online (Sandbox Code Playgroud) 我有一个存储过程,可以识别上次 SSIS 作业运行中候选人信息的任何更改。然后它继续将更改保存在同步表中。
\nCREATE PROCEDURE [dbo].[IdentifyCandidateChanges]\xc2\xa0\xc2\xa0\n(\xc2\xa0\xc2\xa0\n@MoreToProcess BIT = 0 OUTPUT\xc2\xa0\xc2\xa0\n)\xc2\xa0\xc2\xa0\nAS\xc2\xa0\xc2\xa0\n\nSET NOCOUNT ON\xc2\xa0\xc2\xa0\n\nDECLARE @BatchSize INT\xc2\xa0\xc2\xa0\n\nSELECT\xc2\xa0\xc2\xa0\n@MoreToProcess = 0\xc2\xa0\xc2\xa0\n, @BatchSize = 200000\xc2\xa0\xc2\xa0\n\nDECLARE @Changes TABLE\xc2\xa0\xc2\xa0\n(\xc2\xa0\xc2\xa0\n CandidateNo VARCHAR(10) NOT NULL\xc2\xa0\xc2\xa0\n, CentreNo CHAR(5) NOT NULL\xc2\xa0\xc2\xa0\n, CandidateModifiedDate DATETIME NOT NULL\xc2\xa0\xc2\xa0\n, ChangeStatus CHAR(1) NOT NULL\xc2\xa0\xc2\xa0\n)\xc2\xa0\xc2\xa0\n\n-- If this is the first run (or the CandidateSync table is empty for another reason) then just take the hit now\xc2\xa0\xc2\xa0\n-- and process the entire set of candidates in one go.\xc2\xa0\xc2\xa0\n\nIF EXISTS(SELECT TOP 1 1 FROM CandidateSync)\xc2\xa0\xc2\xa0\nSET ROWCOUNT @BatchSize\xc2\xa0\xc2\xa0\n\nINSERT INTO @Changes\xc2\xa0\xc2\xa0\n(\xc2\xa0\xc2\xa0\n CandidateNo\xc2\xa0\xc2\xa0\n, …
Run Code Online (Sandbox Code Playgroud)