我有一个存储父/子记录的表,如下所示:
+-------+------------+---------+---------+------------+-----------+
|custid | custname | deptid | company |parentcustid| enrolled |
+=======+============+=========+=========+============+===========+
| 7060 | Sally | AB1 | comp1 | null | 1 |
| 6953 | Ajit | AB7 | comp2 | 7060 | 1 |
| 6957 | Rahul | DE1 | comp3 | 7060 | 1 |
| 6958 | uday | TG6 | comp4 | 7060 | 1 |
| 6959 | john | HY7 | comp5 | 7060 | 1 |
| 6960 …
Run Code Online (Sandbox Code Playgroud) 我需要根据以前的记录返回 0 或 1。示例表:
DECLARE @x TABLE(ProductID INT, Failed bit, SampleDate date, LevelCode int);
INSERT @x VALUES
(101, 0, '20151201', 1),
(101, 1, '20151205', 2),
(101, 0, '20151206', 3),
(101, 1, '20151208', 2),
(102, 1, '20151202', 1),
(102, 0, '20151204', 2),
(102, 0, '20151205', 3),
(103, 0, '20160101', 1),
(103, 1, '20160102', 2),
(103, 0, '20160103', 2),
(104, 0, '20160101', 1),
(104, 0, '20160102', 2),
(104, 0, '20160103', 3);
Run Code Online (Sandbox Code Playgroud)
我们在最后一条记录上唯一关心的是LevelCode(即每个ProductID 的最后一条记录)。最后一条记录是否通过/失败无关紧要。然后,我们查看该 ProductID 的所有其他记录(因此是最后一条记录之前的所有记录),如果出现与最后一条记录相同的 LevelCode 失败,我们将 IsLastRunSameLevelAsPreviousRun 设置为 1,否则为 0:
ProductID …
Run Code Online (Sandbox Code Playgroud) 我试图想出最有效的方法来搜索大约 130,000 条记录的集合中的记录。总而言之,我们有大约 130,000 条 Active Directory 记录。我正在构建一个在 AD 中查找用户的站点。我想在搜索框上实现 TypeAhead 功能。我可以直接在代码中查询 AD,但我正在考虑将数据转储到 SQL Server 中并进行查询。当您在文本框中键入字符时,TypeAhead 会进行搜索。按单个字符搜索130,000条记录的表是否有效?我想确定应该由 SQL Server 引擎还是在站点上进行搜索?我在想 SQL Server。如果为真,使用 FREETEXT 还是 CONTAINS 全文搜索更好?
好奇社区对此有何看法?还是我离题了?
如何比较以前记录的值?
桌子:
ID SAMPLEDATE LEVEL PASSED
1 1/1/2016 0 1
2 1/2/2016 1 1
3 1/3/2016 2 0
4 1/4/2016 1 1
5 1/5/2016 2 0
Run Code Online (Sandbox Code Playgroud)
最后一条记录(由 排序SAMPLEDATE
)是否与最后LEVEL
一条失败的记录相同?如果是,则返回 TRUE,否则返回 FALSE。
因此,在我的示例数据中,最后一条记录失败并显示为LEVEL
2。然后在 2016 年 1 月 3 日失败的最后一条记录(在 2016 年 1 月 5 日之前)是相同的 LEVEL,因此将返回 TRUE。如果是不同的 LEVEL FALSE 将被返回。
ID MODEL MODELSTATUS CONTROL
11 100 GOOD XN
24 100 TRENDING BF
33 101 GOOD XN
46 102 BAD BF
50 103 BAD XN
64 103 BAD BF
77 104 PENDING XN
89 104 TRENDING BF
92 105 TRENDING BF
93 105 TRENDING XN
Run Code Online (Sandbox Code Playgroud)
鉴于上面的数据,我将如何返回下面的结果。可以有 1 条或 2 条(最多)具有相同 MODEL 的记录。如果 MODEL 有 2 个记录,则 CONTROL 将不同。
如果 MODESTATUS 为“趋势”,则返回该记录。否则,如果 MODELSTATUS 是 'Pending' 或 'Bad' 返回该记录。否则,如果 MODEL 有 2 条记录,其中 MODELSTATUS 与 CONTROL 的返回记录相同,则为“XN”
ID MODEL MODELSTATUS CONTROL
24 100 …
Run Code Online (Sandbox Code Playgroud)