以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  请教select子句的运用  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=119761)

--  作者:yetle
--  发布时间:2018/5/31 14:42:00
--  请教select子句的运用
select 
 a.stockunit, a.ColorBegNum, a.minnum, a.fConvert,  a.Weight, a.colthl, a.code,A.Kind_Desc,a.Model_Desc,a.WLBYEnd_Desc,a.name,a.useunit,a.Stru,a.PubPrice,b.ftyname,MAX(c.PriceA_NoInvo) as PriceA_NoInvo  
 f rom ms_code  a left join MS_Fty b on a.Fty=b.Fty left join ms_code_price c on a.code=c.code where C.code=\'10221045019\' group by a.stockunit, a.ColorBegNum, a.minnum, a.fConvert,  a.Weight, a.colthl, a.code,A.Kind_Desc,a.Model_Desc,a.WLBYEnd_Desc,a.name,a.useunit,a.Stru,a.PubPrice,b.ftyname 

(select (select Max(NewPRICE) f rom (values (c.PriceA_NoInvo),(c.PriceB_NoInvo),(c.PriceC_NoInvo),(c.PriceD_NoInvo),(c.PriceE_NoInvo),
(c.PriceF_NoInvo),(c.PriceG_NoInvo),(c.PriceS_NoInvo),(c.PriceM_NoInvo),(c.PriceL_NoInvo),(c.PriceXL_NoInvo)) as #temp(NewPRICE)) as PriceA_NoInvo f rom ms_code_price)
 

将黄色select子句代替橙色部分,放进去之后
select 
 a.stockunit, a.ColorBegNum, a.minnum, a.fConvert,  a.Weight, a.colthl, a.code,A.Kind_Desc,a.Model_Desc,a.WLBYEnd_Desc,a.name,a.useunit,a.Stru,a.PubPrice,b.ftyname,
 
(select (select Max(NewPRICE) f rom (values (c.PriceA_NoInvo),(c.PriceB_NoInvo),(c.PriceC_NoInvo),(c.PriceD_NoInvo),(c.PriceE_NoInvo),
(c.PriceF_NoInvo),(c.PriceG_NoInvo),(c.PriceS_NoInvo),(c.PriceM_NoInvo),(c.PriceL_NoInvo),(c.PriceXL_NoInvo)) as #temp(NewPRICE)) as PriceA_NoInvo f rom ms_code_price)
   
 f rom ms_code  a left join MS_Fty b on a.Fty=b.Fty left join ms_code_price c on a.code=c.code where C.code=\'10221045019\' 
 group by a.stockunit, a.ColorBegNum, a.minnum, a.fConvert,  a.Weight, a.colthl, a.code,A.Kind_Desc,a.Model_Desc,a.WLBYEnd_Desc,a.name,a.useunit,a.Stru,a.PubPrice,b.ftyname 

提示:
选择列表中的列 \'ms_code_price.PriceA_NoInvo\' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。




改成:
select 
 a.stockunit, a.ColorBegNum, a.minnum, a.fConvert,  a.Weight, a.colthl, a.code,A.Kind_Desc,a.Model_Desc,a.WLBYEnd_Desc,a.name,a.useunit,a.Stru,a.PubPrice,b.ftyname,
 
(select (select Max(NewPRICE) f rom (values (c.PriceA_NoInvo),(c.PriceB_NoInvo),(c.PriceC_NoInvo),(c.PriceD_NoInvo),(c.PriceE_NoInvo),
(c.PriceF_NoInvo),(c.PriceG_NoInvo),(c.PriceS_NoInvo),(c.PriceM_NoInvo),(c.PriceL_NoInvo),(c.PriceXL_NoInvo)) as #temp(NewPRICE)) as PriceA_NoInvo f rom ms_code_price)
   
 f rom ms_code  a left join MS_Fty b on a.Fty=b.Fty left join ms_code_price c on a.code=c.code where C.code=\'10221045019\' 
 group by a.stockunit, a.ColorBegNum, a.minnum, a.fConvert,  a.Weight, a.colthl, a.code,A.Kind_Desc,a.Model_Desc,a.WLBYEnd_Desc,a.name,a.useunit,a.Stru,a.PubPrice,b.ftyname,
 c.PriceA_NoInvo,c.PriceB_NoInvo,c.PriceC_NoInvo,c.PriceD_NoInvo,c.PriceE_NoInvo,c.PriceF_NoInvo,c.PriceG_NoInvo,c.PriceS_NoInvo,c.PriceM_NoInvo,c.PriceL_NoInvo,c.PriceXL_NoInvo
  又提示:
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
警告: 聚合或其他 SET 操作消除了 Null 值。
[此贴子已经被作者于2018/5/31 14:55:15编辑过]

--  作者:有点甜
--  发布时间:2018/5/31 14:59:00
--  

不能直接group by,你可以查询结束后,最后再写一个select group by


--  作者:yetle
--  发布时间:2018/5/31 15:21:00
--  
不是这么回事,加载子句后的group by 后也不行
--  作者:有点甜
--  发布时间:2018/5/31 15:42:00
--  
以下是引用yetle在2018/5/31 15:21:00的发言:
不是这么回事,加载子句后的group by 后也不行

 

1、去掉group by行不行?如果可以,那么你生成这个表以后,再group by一下;

 

2、不会做,请把数据库上传,把你需要实现的功能说明。


--  作者:yetle
--  发布时间:2018/5/31 16:11:00
--  
select 
 a.stockunit, a.ColorBegNum, a.minnum, a.fConvert,  a.Weight, a.colthl, a.code,A.Kind_Desc,a.Model_Desc,a.WLBYEnd_Desc,a.name,a.useunit,a.Stru,a.PubPrice,b.ftyname,
 
(select (select Max(NewPRICE) f rom (values (c.PriceA_NoInvo),(c.PriceB_NoInvo),(c.PriceC_NoInvo),(c.PriceD_NoInvo),(c.PriceE_NoInvo),
(c.PriceF_NoInvo),(c.PriceG_NoInvo),(c.PriceS_NoInvo),(c.PriceM_NoInvo),(c.PriceL_NoInvo),(c.PriceXL_NoInvo)) as #temp(NewPRICE)) as PriceA_NoInvo f rom ms_code_price m  where code=c.code   )
   
 fr om ms_code  a left join MS_Fty b on a.Fty=b.Fty left join ms_code_price c on a.code=c.code where C.code=\'10221045019\' 
 group by a.stockunit, a.ColorBegNum, a.minnum, a.fConvert,  a.Weight, a.colthl, a.code,A.Kind_Desc,a.Model_Desc,a.WLBYEnd_Desc,a.name,a.useunit,a.Stru,a.PubPrice,b.ftyname,
 c.PriceA_NoInvo,c.PriceB_NoInvo,c.PriceC_NoInvo,c.PriceD_NoInvo,c.PriceE_NoInvo,c.PriceF_NoInvo,c.PriceG_NoInvo,c.PriceS_NoInvo,c.PriceM_NoInvo,c.PriceL_NoInvo,c.PriceXL_NoInvo
 
改成这样,提示:
选择列表中的列 \'ms_code_price.code\' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。

--  作者:有点甜
--  发布时间:2018/5/31 16:18:00
--  

1、去掉group by行不行?如果可以,那么你生成这个表以后,再group by一下;

 

2、不会做,请把数据库上传,把你需要实现的功能说明。