当前位置: 代码迷 >> Sql Server >> 简单的分组查询有关问题求解惑
  详细解决方案

简单的分组查询有关问题求解惑

热度:82   发布时间:2016-04-24 09:30:45.0
简单的分组查询问题求解惑
sqlserver有这样一个视图存放订货信息:


问题一:
现在要查询货号出现次数大于的1的记录条数
--查询同一个货号出现次数大于1的 比如SEA33C01030 存在3条
  select * from v_22 WHERE Bar_No='SEA33C01030'
  
  --按Bar_No,Out_Date,Color_NO,pf_order_NB 分组取出每组Bar_No 大于1的 但是这样查出结果为空
  select * from v_22
  group by Bar_No,Out_Date,Color_NO,pf_order_NB
having COUNT(Bar_No)>1


---这样OK
select * from v_22
where Bar_No in(
  select   Bar_No from v_22
  group by Bar_No
having COUNT(Bar_No)>1 

我想知道分组计数的方法哪里错了?

问题二:查询出每个货号和颜色代码对应的订货日期最小的记录,比如这样的记录:

------解决思路----------------------
第一个,其实也就是分组的概念
一个是必须Bar_No,Out_Date,Color_NO,pf_order_NB都相同才认为是一组,一个是Bar_No相同就认为是一组,能一样吗

第二个,
SELECT * FROM(
SELECT ROW_NUMBER()OVER(ORDER BY Out_Date)RN
,*
FROM v_22
)T
WHERE RN=1

------解决思路----------------------
SELECT * FROM(
    SELECT ROW_NUMBER()OVER(PARTITION BY Bar_No,Color_NO ORDER BY Out_Date)RN
        ,*
    FROM v_22
)T
WHERE RN=1
呃,没注意,你试试这个
  相关解决方案