T-SQL 从值条件开始选择

发布于 2024-10-17 16:24:44 字数 410 浏览 0 评论 0原文

在 SQL Server 2008 中,我有下表。

在此处输入图像描述

谢谢

create table test1 ([Number] int, Item varchar(10))
insert into test1 values (20 , 'Item 1'),(30 , 'Item 2'),(60 , 'Item 3'),(23 , 'Item 4'),(10 , 'Item 5'),(76 , 'Item 6'),(44 , 'Item 7'),(99 , 'Item 8'),(10 , 'Item 9'),(22 , 'Item 10'),(77 , 'Item 11'),(10 , 'Item 12')

In SQL server 2008, I have below table.

enter image description here

Thanks

create table test1 ([Number] int, Item varchar(10))
insert into test1 values (20 , 'Item 1'),(30 , 'Item 2'),(60 , 'Item 3'),(23 , 'Item 4'),(10 , 'Item 5'),(76 , 'Item 6'),(44 , 'Item 7'),(99 , 'Item 8'),(10 , 'Item 9'),(22 , 'Item 10'),(77 , 'Item 11'),(10 , 'Item 12')

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

幸福丶如此 2024-10-24 16:24:44

没有特定的主键,表中的数据没有固有的顺序,例如,将每条记录想象成一张纸倾倒在篮子中(没有特定的顺序) )。

select a.*--, b.pvt
from test1 a
inner join (select MIN(1*substring(item,6,10)) pvt from test1 where number=10) b
    on 1*substring(a.item,6,10) >= b.pvt
order by 1*substring(a.item,6,10)

我做了以下假设:

  • 顺序是按商品编号排列的,其中
  • 商品编号始终是“商品”列中的第 6 个字符以后

如果假设错误,那么您仍然可以使用类似的技术,即找到关键记录并使用 >= 连接到它

Without a specific primary key, there is no inherent order to the data in the table, e.g. imagine each record as a sheet of paper dumped in a basket (in no particular order).

select a.*--, b.pvt
from test1 a
inner join (select MIN(1*substring(item,6,10)) pvt from test1 where number=10) b
    on 1*substring(a.item,6,10) >= b.pvt
order by 1*substring(a.item,6,10)

I have made the following assumptions:

  • The order is by the Item number, where
  • Item number is always the 6th character onwards in the column "Item"

If the assumptions are wrong, then you can still use a similar technique, which is to find the pivotal record and join to it using >=

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文