用存储过程union all还是少数据

马不拉虎 2013-02-25 05:57:43
原来写了一个存储过程:


create procedure Location_groupbyitem_location_sum_Combine (@pg1 char(20),@pg2 char(20))as
select a.* from (
(select id,itemcode ,itemname,chinesename,sum(boxqtyofsum) as boxqtyofsum,sum(qtysumofsum) as qtysumofsum,unit,[type],'' as productgroup,'' as barcode
from Location_groupbyitem_location_sum
where (productgroup like '%Burg%' or productgroup like '%Lighting Unit%') And qtysumOfSum>0
group by id,itemcode,itemname,chinesename,unit,[type]
having count(productgroup)>1 )
union
(select id,itemcode,itemname,chinesename,sum(boxqtyofsum) as boxqtyofsum,sum(qtysumofsum) as qtysumofsum,unit,[type], '' as productgroup, '' as barcode
from Location_groupbyitem_location_sum
where (productgroup like '%Burg%' or productgroup like '%Lighting Unit%') And qtysumOfSum>0 and type='part'
group by id,itemcode,itemname,chinesename,unit,[type]
having count(itemcode)<2)
union
(select id,itemcode,itemname,chinesename,sum(boxqtyofsum) as boxqtyofsum,sum(qtysumofsum) as qtysumofsum,unit,[type], '' as productgroup, '' as barcode
from Location_groupbyitem_location_sum
where (productgroup like '%Burg%' or productgroup like '%Lighting Unit%') And qtysumOfSum>0 and type='item'
group by id,itemcode,itemname,chinesename,unit,[type]
having count(itemcode)<2)
)a
发现第三个子select中的数据没有出来,用了union all之后还是没有……
但代入数据,用视图写出来,无论union还是union all数据都是对的.

想请教大家,这是为什么?难道存储过程写法是错的?那要怎样写呢?
谢谢!
...全文
462 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
马不拉虎 2013-02-26
  • 打赏
  • 举报
回复
非常抱歉,贴错了……这是我把参数代入时检查时用的,一不小心copy错了。 根据楼上提示,修改后已正确,非常感谢! 原始代码是: CREATE procedure Location_groupbyitem_location_sum_Combine (@pg1 char(20),@pg2 char(20))as select a.* from ( (select id,itemcode ,itemname,chinesename,sum(boxqtyofsum) as boxqtyofsum,sum(qtysumofsum) as qtysumofsum,unit,[type],'' as productgroup,'' as barcode from Location_groupbyitem_location_sum where (productgroup like @pg1 or productgroup like @pg2) And qtysumOfSum>0 group by id,itemcode,itemname,chinesename,unit,[type] having count(productgroup)>1 ) union all (select id,itemcode ,itemname,chinesename,sum(boxqtyofsum) as boxqtyofsum,sum(qtysumofsum) as qtysumofsum,unit,[type],'' as productgroup, '' as barcode from Location_groupbyitem_location_sum where (productgroup like @pg1 or productgroup like @pg2) And qtysumOfSum>0 and type='part' group by id,itemcode,itemname,chinesename,unit,[type] having count(itemcode)<2) union all (select id,itemcode ,itemname,chinesename,sum(boxqtyofsum) as boxqtyofsum,sum(qtysumofsum) as qtysumofsum,unit,[type],'' as productgroup, '' as barcode from Location_groupbyitem_location_sum where (productgroup like @pg1 or productgroup like @pg2) And qtysumOfSum>0 and type='item' group by id,itemcode,itemname,chinesename,unit,[type] having count(itemcode)<2) )a order by id
马不拉虎 2013-02-26
  • 打赏
  • 举报
回复
查了些资料,char()和varchar()的不同仅在于是否可变长度。 在这个例子中,是这个原因导致的问题吗?如果是,详细过程是怎样的呢?小钱钱发完了,纯问题。
昵称被占用了 2013-02-25
  • 打赏
  • 举报
回复
另外,你的两个参数(@pg1 char(20),@pg2 char(20))没有用到,怀疑你贴的不是原始代码 你把参数修改为 (@pg1 VARchar(20),@pg2 VARchar(20)) 试试 尽量贴原始代码,免得浪费我的时间
马不拉虎 2013-02-25
  • 打赏
  • 举报
回复
2005,不清楚有没有补丁
昵称被占用了 2013-02-25
  • 打赏
  • 举报
回复
SQL SERVER什么版本,是否没有打补丁

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧