Ι有一些表(例如[Table1],[Table2],[Table3]等)与[ID]作为主键和一个RecTime作为DATETIME每个.
ΑlsoΙ有一个表[Files],用于保存varbinary(max)列中的文件,并引用具有其名称和ID的其他表.
[Table2],[Table3]和其他人有不同的结构,但完全分享[ID]和[RecTime]列[Table1]
以下是可视化数据的快速示例.
DECLARE @Table1 as table (
      [ID] [bigint]
    , [RecTime] [datetime]
)
DECLARE @Table2 as table (
      [ID] [bigint]
    , [RecTime] [datetime]
)
DECLARE @Table3 as table (
      [ID] [bigint]
    , [RecTime] [datetime]
)
DECLARE @Files as table (
      [ID] [bigint]
    , [tblName] nvarchar(255) NULL
    , [tblID] bigint NULL
    , [BinaryData]  varbinary(max)
    /* …Run Code Online (Sandbox Code Playgroud) 我有以下 3 个相关表
Schools           Departments          Classes
---------------   ------------------   -----------------
ID                ID                   ID
School_Name       ID_Schools           ID_Departments
                  Department_Name      Class_Name
Run Code Online (Sandbox Code Playgroud)
和一些关于它们包含的内容的样本(我会尽可能地画出来)
---- Schools ---
ID   School_Name
----------------
 1   School_1  <----------------------\
 2   School_2                         |
 n   ........                         |
                                      |
---- Departments ----------------     |
ID   ID_Schools   Department_Name     |
---------------------------------     |
 1            1   Dept_1  <-----------/ -->--\
 2            1   Dept_2  <-----------/ -->--|------\
 3            2   Dept_1                     |      |
 n           ..   ......                     |      |
                                             |      |
---- Classes -------------------             |      |
ID   ID_Departments   Class_Name             |      |
--------------------------------             |      |
 1 …Run Code Online (Sandbox Code Playgroud) 给出以下表1:
    RefID  intVal  SomeVal
    ----------------------
        1      10    val01
        1      20    val02
        1      30    val03
        1      40    val04
        1      50    val05
        2      10    val06
        2      20    val07
        2      30    val08
        2      40    val09
        2      50    val10
        3      12    val11
        3      14    val12
        4      10    val13
        5     100    val14
        5     150    val15
        5    1000    val16
Run Code Online (Sandbox Code Playgroud)
和Table2包含一些RefID和intVals之类的
    RefID  intVal
    -------------
        1      11    
        1      28    
        2       9    
        2      50    
        2      51    
        4      11    
        5       1    
        5     150    
        5     151    
Run Code Online (Sandbox Code Playgroud)
需要一个SQL语句来获取每个RefID的下一个更大的intValue和NULL,如果在Table1中找不到,则下面是预期的结果
    RefID  intVal  nextGt  SomeVal …Run Code Online (Sandbox Code Playgroud) 我有两个约会:
2012-10-04 12:48:56:000 和 2012-10-04 12:48:58:000
预期的结果是
2012-10-04 12:48:57:000
2012-10-04 12:48:56:000 和 2012-10-04 12:48:56:010
预期的结果是
2012-10-04 12:48:56:005
(日期是虚构的,因为在sql server中,毫秒部分DATETIME数据类型增加3)
我有一个自我相关的表myTable像:
ID | RefID
----------
 1 | NULL
 2 | 1
 3 | 2
 4 | NULL
 5 | 2
 6 | 5
 7 | 5
 8 | NULL
 9 | 7
Run Code Online (Sandbox Code Playgroud)
我需要在任何深度上获得叶子行
根据上表,结果必须是:
ID | RefID
----------
 3 | 2
 4 | NULL
 6 | 5
 8 | NULL
 9 | 7
Run Code Online (Sandbox Code Playgroud)
谢谢
PS:深度可能会有所不同,这里的例子非常小
