悲催啦@!!!~~~

老秋先生 2012-05-10 05:57:49
create proc proc_GetLikeSupplier
@GoodsName varchar(30),
@Type bit
as
declare @GoodID int
set @GoodID = -1
-- 开始发现商品
if(@Type = 0)
select @GoodID = GoodID from Goods where GoodName = @GoodsName
else
select @GoodID = ProductID from Product where ProductName = @GoodsName

-- ~ end
if(@GoodID = -1) -- 没有发现商品
return

select
sps.ComName,
sps.Name,
sps.Addres,
sps.MobileNum,
spsSP.Prices,
A1 = (select COUNT(Prices) from PurchaseLog pl where pl.SupplierID = sps.SupplierID),
A2 = (select SUM(Prices * [Sum]) from PurchaseLog p1 where p1.SupplierID = sps.SupplierID),
A3 = (select count(prices) from PurchaseLog pl where pl.supplierID = sps.SupplierID and Stateds = 2)
from Suppliers sps,SupplierSP spsSP
where
sps.SupplierID = spsSP.SupplierID
and
spsSP.GoodID = @GoodID
and
spsSP.[Type] = @Type
and
sps.SupplierID in (select SupplierID from Suppliers group by SupplierID)
group by sps.SupplierID,spsSP.SupplierID,sps.ComName,sps.Addres,sps.Name,sps.MobileNum,spsSP.Prices
go


消息 8124,级别 16,状态 1,过程 proc_GetLikeSupplier,第 24 行
在包含外部引用的被聚合表达式中指定了多个列。如果被聚合的表达式包含外部引用,那么该外部引用就必须是该表达式中所引用的唯一的一列。


这是啥原因
...全文
125 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
gogodiy 2012-05-11
  • 打赏
  • 举报
回复
分别用两个临时表得到供应商详细信息#t1、供应商各汇总信息#t2,然后根据供应商编号左联接查询:
select * from #t1 left join #t2 on #t1.供应商编号=#t2.供应商编号
老秋先生 2012-05-11
  • 打赏
  • 举报
回复
回复楼上
sps.SupplierID in (select SupplierID from Suppliers group by SupplierID)
是因为 group by 需要将所有列都加入到group语句中 所以
我干脆就先使用in过滤掉重复的SupplierID(因为它是唯一的标识)



--
-- 查出所有供应商它们的ComName,Name,MobileNum,Address,Prices,
-- 以及向该公司的采购次数,累积采购总额,累积退货次数

这是我想要的效果 听起来很悲催对吧???
Felixzhaowenzhong 2012-05-10
  • 打赏
  • 举报
回复
sps.SupplierID in (select SupplierID from Suppliers group by SupplierID)
--这句多余
group by sps.SupplierID,spsSP.SupplierID,sps.ComName,sps.Addres,sps.Name,sps.MobileNum,spsSP.Prices
--从你的分组 和 查询结果 看,是得不到你想要的结果的
--关键在分组的 sps.SupplierID,spsSP.SupplierID,spsSP.Prices 这里
  • 打赏
  • 举报
回复


A3 = (select count(prices) from PurchaseLog pl
where pl.supplierID = sps.SupplierID and (这里是否少一个别名呢)Stateds = 2)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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