当前位置: 代码迷 >> Sql Server >> 请教这条SQL如何写?万分感谢
  详细解决方案

请教这条SQL如何写?万分感谢

热度:18   发布时间:2016-04-24 09:40:13.0
请问这条SQL怎么写?万分感谢!
请问这条SQL怎么写?万分感谢!


------解决思路----------------------
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


这个 应该差不多
  相关解决方案