给定一个值,求组合该值的组合集合

怎样随机取得相同项目名称的数据,条件是只要取得的项目名称数量之和等于某个数(2或者3))
表结构(表名称:item):

项目名称 数量
a 1

a 2

a 3

a 4

a 5

...

说明如下:

我要从表item里面查询出项目名称='a' and sum(数量)=6 的数据
随便几条数据都可以,只要符合上面的条件都行
比如可以查询出的结果为:
前面三条数据(项目名称='a' and sum(数量)=6)
也可以是第一条和最后一条,
也可以是第二条和倒数第二条

用sql语句可以实现吗?
我都整疯了?

--解决办法:

--创建测试环境
declare @t table
(项目名称 varchar(20),数量 int)
insert @t
select 'a',1 union all
select 'a',2 union all
select 'a',3 union all
select 'a',4 union all
select 'a',5

--查询
select * from @t a join @t b
on a.项目名称=b.项目名称 and a.数量<>b.数量
where a.项目名称='a' and a.数量+b.数量=6

--结果

项目名称 数量 项目名称 数量
-------------------- ----------- -------------------- -----------
a 5 a 1
a 4 a 2
a 2 a 4
a 1 a 5

(所影响的行数为 4 行)

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus