我有一个具有以下结构的表
ID PersonID Date
---------------------------
1 1 2017-04-01
2 1 2017-04-15
3 1 2017-05-13
4 1 2017-06-15
5 1 2017-08-13
6 1 2017-10-02
7 2 2017-05-04
8 2 2017-09-16
9 3 2017-04-23
10 3 2017-07-06
11 4 2017-06-01
Run Code Online (Sandbox Code Playgroud)
如果存在,我希望Select在每个Next和Previous行之间2017-05-01和之间行.2017-08-26PersonID
我想要这个结果:
ID PersonID Date
------------------------------
2 1 2017-04-15
3 1 2017-05-13
4 1 2017-06-15
5 1 2017-08-13
6 1 2017-10-02
7 2 2017-05-04
8 2 2017-09-16
9 3 2017-04-23
10 3 2017-07-06
11 4 2017-06-01
Run Code Online (Sandbox Code Playgroud) 我在SQL Server中使用图表。
这是我的桌子:
--Node Table
CREATE TABLE [dbo].[Users]
(
[ID] [int] NOT NULL Primary key,
[FName] [nvarchar](100) NULL,
[LName] [nvarchar](100) NULL
)AS NODE
--Edge Table
CREATE TABLE [dbo].[FriendsOf] AS EDGE
Run Code Online (Sandbox Code Playgroud)
如何选择User2的所有User1朋友和User2是User3的朋友,而User1和User3之间没有直接Edge关系。
我可以这样写这个查询:
select distinct
u1.FName + ' ' + u1.LName as FirstFullName,
u2.FName + ' ' + u2.LName as SecondFullName,
u3.FName + ' ' + u3.LName as ThirdFullName
from
Users u1, FriendsOf fo1, Users u2, FriendsOf fo2, Users u3
where
match(u1-(fo1)->u2-(fo2)->u3)
and not exists(select 1 from friendsof fof …Run Code Online (Sandbox Code Playgroud)