我正在处理类型的应用程序。所以,我有一组放倒像下面的记录: 实施sql逻辑的一个麻烦的要求
Select Ways.*, ErrorFlag
from Ways with(no lock)
inner join Locations with(no lock)
on Locations.WayId = Ways.WayId
在上面的设置我会得到具有位置的所有方式。
现在我有一个规定,以显示一个标志,每个方式,使得
条件1)如果过程中的任何位置未遵守其规则。
规则,每个位置应该有开始时间<结束时间。
所以,现在我只是有一个算法,因为我不擅长实现查询。
对于我已有的结果集, 步骤1)我将创建一个函数,该函数将接收已在结果集中的WayId。
步骤2)函数将从位置表中选择所有位置,其中wayid = @WayId。
步骤3)遍历在步骤2中选择的位置的每一行ID,并检查开始时间>结束时间,并且如果它说是,它将返回true,否则它将继续前进,并且在通过每个行,它会返回false。
我应该如何实现这一点。你能提出一些建议吗?或者如果你有更好的方法。请不要共用一个查询示例,这样它会变得有点容易让我明白..
表结构如下:
方式
WayId colorcode weight length
1 red 50 500m
2 blue 100 200m
位置
LocationId WayId Starttime Endtime
1 1 12:00AM 11:00AM
2 1 1:00 PM 2:00 PM
3 1 3:00 PM 4:00PM
输出:下面的输出是需要的,WayId = 1的方式有位置,所以它会显示,但id = 2的方式没有任何位置,所以它不会显示。
2)的方式有三个位置,以便将数显
3)的方式应该表现出ErrorFlag =真为它的一个位置有开始时间比结束时间大。
WayId colorCode weight length ErrorFlag Locations
1 red 50 500 true 3
你如何确定12:00 am大于11:00 am? – dfundako
“Locations”表中的“Starttime”和“Endtime”列的SQL类型是什么? – 3N1GM4