首页 > 解决方案 > 选择两个字符串值之间的数据范围

问题描述

我想在两个字符串值 AAA 和 DDD 之间选择数据。有些数据超出了我不想要的 AAA 和 DDD 范围。有任何想法吗。谢谢。

在此处输入图像描述

标签: tsql

解决方案


根据我对您的问题的了解,您似乎想要 AAA 和 DDD 之间的行。

桌子

DECLARE @t TABLE (Id INT, FileN VARCHAR(25), Col1 VARCHAR(255))
INSERT INTO @t VALUES
(1,'eee.doc','AAA'),(3,'eee.doc','234'),(4,'eee.doc','tt2'),(7,'eee.doc','wwpp'), 
(8,'eee.doc','DDD'),(9,'eee.doc','tyyyuui'),(10,'ddd.doc','43ffhgd'),(12,'ddd.doc','AAA'),
(14,'ddd.doc','rtty'),(15,'ddd.doc','ppii'),(16,'ddd.doc','hhcc'),(18,'ddd.doc','7ghij'),
(20,'ddd.doc','DDD')

询问

SELECT t.*
FROM    @t t
    INNER JOIN (    SELECT  b.*
                    FROM    (   SELECT a.*, LEAD(Id, 1 , NULL) OVER (PARTITION BY FileN ORDER BY a.Id) NextId
                                FROM    (   SELECT  Id, FileN, Col1
                                            FROM    @t t
                                            WHERE   Col1 IN ('AAA','DDD')       
                                        ) a
                            ) b
                    WHERE b.Col1 = 'AAA'
                ) r
        ON t.Id > r.Id  AND t.Id < r.NextId 
ORDER BY 1

输出

Id  FileN     Col1
========================
3   eee.doc   234
4   eee.doc   tt2
7   eee.doc   wwpp
14  ddd.doc   rtty  
15  ddd.doc   ppii
16  ddd.doc   hhcc
18  ddd.doc   7ghij

推荐阅读