SELECT 地区,产品,型号,规格,数量 FROM( SELECT 地区,产品,型号,规格,数量,COUNT(1)OVER(PARTITION BY 地区)C FROM 数据表 WHERE (产品='m25'AND 型号='xl'AND 规格='灰色')OR(产品='s76'AND 型号='l'AND 规格='蓝色') )T WHERE C>=2
with TempTB as ( SELECT 地区,产品,型号,规格,数量,row_number() OVER(PARTITION BY 地区) as id FROM 数据表 ) select 地区,产品,型号,规格,数量 TempDB where id>=2红色部分可以调整大小,比如需要商品数量大于等于2就是id>=2 ,如果大于等于3就是id>=3 ,依次类推 另外还可以根据具体业务在where后添加适当条件
;with Cte as (select 产品='m25', 型号='xl', 规格='灰色' union all select 产品='s76', 型号='l', 规格='蓝色' ) select * from 数据表 as a where not exists(select 1 from Cte as b where not exists(select 1 from 数据表 where [地区]=a.[地区] and 产品=b.产品 and 型号=b.型号 and 规格=b.规格))传参时可用DataTable 类型,或用xml把参数当结果集传
drop table #table create table #table ( 地区 varchar(10) ,产品 varchar(10) ,型号 varchar(10) ,规格 varchar(10) ,数量 varchar(10) )insert into #table values ('北京','m10','s','黑色','10')insert into #table values ('北京','m20','s','白色','10') insert into #table values ('天津','m21','l','蓝色','10')
insert into #table values ('沈阳','m25','x1','灰色','10')insert into #table values ('沈阳','s76','l','蓝色','20')select * from #table with TempTB as ( SELECT 地区,产品,型号,规格,数量,row_number() OVER(PARTITION BY 地区 order by 地区 ) as id FROM #table where (产品='m25'AND 型号='x1'AND 规格='灰色')OR(产品='s76'AND 型号='l'AND 规格='蓝色') ) select 地区,产品,型号,规格,数量 from TempTB where id<=2 这个 应该差不多
select * from #table with TempTB aswith 前面加个 ; 分号 就能一起 执行了
insert into #table values ('沈阳','m25','x1','灰色','10')insert into #table values ('沈阳','s76','l','蓝色','20')insert into #table values ('北京','s76','l','蓝色','20') insert into #table values ('天津','s76','l','蓝色','20') select * from #table ;with TempTB as ( SELECT 地区,产品,型号,规格,数量,row_number() OVER(PARTITION BY 地区 order by 地区 ) as id FROM #table where (产品='m25'AND 型号='x1'AND 规格='灰色')OR(产品='s76'AND 型号='l'AND 规格='蓝色') ) select a.地区,a.产品,a.型号,a.规格,a.数量 from #table as a inner join TempTB as b on a.地区 = b.地区 where id=2
SELECT
地区,产品,型号,规格,数量,COUNT(1)OVER(PARTITION BY 地区)C
FROM 数据表
WHERE (产品='m25'AND 型号='xl'AND 规格='灰色')OR(产品='s76'AND 型号='l'AND 规格='蓝色')
)T WHERE C>=2
with TempTB as
(
SELECT
地区,产品,型号,规格,数量,row_number() OVER(PARTITION BY 地区) as id
FROM 数据表
)
select 地区,产品,型号,规格,数量
TempDB where id>=2红色部分可以调整大小,比如需要商品数量大于等于2就是id>=2 ,如果大于等于3就是id>=3 ,依次类推
另外还可以根据具体业务在where后添加适当条件
as
(select 产品='m25', 型号='xl', 规格='灰色'
union all
select 产品='s76', 型号='l', 规格='蓝色'
)
select * from 数据表 as a where not exists(select 1 from Cte as b where not exists(select 1 from 数据表 where [地区]=a.[地区] and 产品=b.产品 and 型号=b.型号 and 规格=b.规格))传参时可用DataTable 类型,或用xml把参数当结果集传
create table #table
(
地区 varchar(10)
,产品 varchar(10)
,型号 varchar(10)
,规格 varchar(10)
,数量 varchar(10)
)insert into #table values
('北京','m10','s','黑色','10')insert into #table values
('北京','m20','s','白色','10')
insert into #table values
('天津','m21','l','蓝色','10')
insert into #table values
('沈阳','m25','x1','灰色','10')insert into #table values
('沈阳','s76','l','蓝色','20')select * from #table with TempTB as
(
SELECT
地区,产品,型号,规格,数量,row_number() OVER(PARTITION BY 地区 order by 地区 ) as id
FROM #table
where (产品='m25'AND 型号='x1'AND 规格='灰色')OR(产品='s76'AND 型号='l'AND 规格='蓝色')
)
select 地区,产品,型号,规格,数量 from
TempTB where id<=2
这个 应该差不多
create table #table
(
地区 varchar(10)
,产品 varchar(10)
,型号 varchar(10)
,规格 varchar(10)
,数量 varchar(10)
)insert into #table values
('北京','m10','s','黑色','10')insert into #table values
('北京','m20','s','白色','10')
insert into #table values
('天津','m21','l','蓝色','10')
insert into #table values
('沈阳','m25','x1','灰色','10')insert into #table values
('沈阳','s76','l','蓝色','20')insert into #table values
('北京','s76','l','蓝色','20')
insert into #table values
('天津','s76','l','蓝色','20')
select * from #table ;with TempTB as
(
SELECT
地区,产品,型号,规格,数量,row_number() OVER(PARTITION BY 地区 order by 地区 ) as id
FROM #table
where (产品='m25'AND 型号='x1'AND 规格='灰色')OR(产品='s76'AND 型号='l'AND 规格='蓝色')
)
select a.地区,a.产品,a.型号,a.规格,a.数量
from #table as a
inner join TempTB as b
on a.地区 = b.地区
where id=2