读书人

大家帮帮忙 关于数据表与if else之间的

发布时间: 2012-02-05 12:07:15 作者: rapoo

大家帮帮忙 关于数据表与if else之间的问题,在线急等
storechain s ,
if '高库存 '= '高库存 '
begin
create table #ls_forWeekSaleQua(forWeekSaleQua int)
insert into #ls_forWeekSaleQua values (0)
select forWeekSaleQua from #ls_forWeekSaleQua
end

else
begin
(select orgno,merchid ,sum(SaleQuantity) as forWeekSaleQua
from MerchSaleHistory where historydate between '2006-2-15 ' and '2006-03-15 '
group by orgno,merchid)m
end

storechain 是一个数据库表,MerchSaleHistory 也是一个数据库表,
现在我执行整个SQL语句报
服务器: 消息 156,级别 15,状态 1,行 33
在关键字 'if ' 附近有语法错误。
而且还提示那个别名m报错,
大家帮帮忙,

[解决办法]
(select orgno,merchid ,sum(SaleQuantity) as forWeekSaleQua
from MerchSaleHistory where historydate between '2006-2-15 ' and '2006-03-15 '
group by orgno,merchid)m
------------------------------------------------------
改为:(去掉子查询括号和m)
select orgno,merchid ,sum(SaleQuantity) as forWeekSaleQua
from MerchSaleHistory where historydate between '2006-2-15 ' and '2006-03-15 '
group by orgno,merchid

[解决办法]
storechain s , --这样的语法是错误的
if '高库存 '= '高库存 ' --这个条件永远成立啊
begin
create table #ls_forWeekSaleQua(forWeekSaleQua int)
insert into #ls_forWeekSaleQua values (0)
select forWeekSaleQua from #ls_forWeekSaleQua
end

else
begin
select orgno,merchid ,sum(SaleQuantity) as forWeekSaleQua
from MerchSaleHistory where historydate between '2006-2-15 ' and '2006-03-15 '
group by orgno,merchid
end
[解决办法]
--storechain s ,
if '高库存 '= '高库存 '
begin
create table #ls_forWeekSaleQua(forWeekSaleQua int)
insert into #ls_forWeekSaleQua values (0)
select forWeekSaleQua from #ls_forWeekSaleQua
end

else
begin
(select orgno,merchid ,sum(SaleQuantity) as forWeekSaleQua
from MerchSaleHistory where historydate between '2006-2-15 ' and '2006-03-15 '
group by orgno,merchid)
end

[解决办法]

(if '高库存 '= '高库存 '
...
else
...)
前后的括号去掉.即:
if '高库存 '= '高库存 '
...
else
...

[解决办法]
你那样加别名是不符合语法的,应该这样加别名(大写的部分):
if '高库存 '= '高库存 '
begin
create table #ls_forWeekSaleQua(forWeekSaleQua int)
insert into #ls_forWeekSaleQua values (0)
SELECT * FROM
(select forWeekSaleQua from #ls_forWeekSaleQua ) AS m
end

else
begin
SELECT * FROM
(select orgno,merchid ,sum(SaleQuantity) as forWeekSaleQua
from MerchSaleHistory where historydate between '2006-2-15 ' and '2006-03-15 '
group by orgno,merchid) AS m
end
[解决办法]
copy错了,不好意思:
select b.orgno,b.deptcode,b.sku,b.merchid,
c.merchname,isnull(c.packingname, ' ')packingname,


isnull(convert(varchar(10),
case when floor(c.specification)=0
then null else floor(c.specification)
end)+c.specunit, ' ')specification ,
isnull(c.subunit,0)subunit,
isnull(a.avgprice,0)avgprice,
isnull(b.RetailPrice,0)RetailPrice,
isnull(AvgSalePerMon,0)avgsaleperday ,
case when '高库存 '= '低库存 ' then m.forWeekSaleQua else 0 end as forWeekSaleQua ,
isnull(a.endquantity,0)endquantity,
--case when '高库存 '= '低库存 ' then p.OrderQuantity else 0 end as OrderQuantity ,
isnull(endcost,0)endcost,
--case when '高库存 '= '负库存 ' then (a.endquantity*(b.RetailPrice-a.avgprice)) else 0 end as ProfitRate,
case when AvgSalePerMon=0 then '未销售 '
else convert(varchar(20),a.endquantity/AvgSalePerMon)
end as avgday, convert(varchar(10),b.LastPurchaseDate,121 )LastPurchaseDate,
--case when '高库存 '= '低库存 ' then convert(varchar(10),m1.LastSaleDate,121 )
--else 0 end as LastSaleDate ,
max(e.orgno1)orgno1 ,
case when i.bz is null then ' ' else i.bz end as bz

from avgsalehistory a
left join (select distinct g.ExeOrgNO ,g.merchid , '促销 ' as bz
from retailpromotionitem g ,retailpromotion h
where g.MakeOrgNO=h.MakeOrgNO and g.ExeOrgNO=h.ExeOrgNO
and g.promoid=h.promoid and '2006-03-15 '
between h.startdate and h.endDate and g.enable=1 and h.Status=2 and h.ExeOrgNO=0 ) i
on a.orgno=i.ExeOrgNO and a.merchid=i.merchid ,
orgmerch b ,merchandise c,SupplyDCMerch e ,storechain s --,
-- drop table #ls_forWeekSaleQua
if '高库存 '= '高库存 '
begin
create table #ls_forWeekSaleQua(forWeekSaleQua int)
insert into #ls_forWeekSaleQua values (0)
select forWeekSaleQua from #ls_forWeekSaleQua
end

else
begin
select orgno,merchid ,sum(SaleQuantity) as forWeekSaleQua
from MerchSaleHistory where historydate between '2006-2-15 ' and '2006-03-15 '
group by orgno,merchid
end

/*

-- (select orgno, max(historydate) as LastSaleDate,merchid
-- from MerchSaleHistory where historydate <= '2006-03-15 '
-- group by merchid,orgno) m1,
-- (select p.OrderOrgNO, max(p1.LastModifyDT)LastModifyDT ,OrderQuantity, MerchID
-- from PurchaseOrderItem p,PurchaseOrder p1
-- where p.orderid=p1.orderid and p1.Status=2 and p1.LastModifyDT <= '2006-03-15 '
-- group by p.OrderOrgNO,OrderQuantity, MerchID) p
where a.orgno=b.orgno and a.merchid =b.merchid
and a.merchid=c.merchid and a.orgno=e.orgno2
-- and a.merchid=m.merchid and a.merchid=m1.merchid and
-- a.merchid=p.merchid and a.orgno=p.OrderOrgNO and a.orgno=m.orgno
-- and a.orgno=m1.orgno
and a.merchid=e.merchid and (a.orgno=0or s.parentorgno=0)
and a.orgno=s.childorgno and a.historydate = '2006-03-15 ' and b.merchid=c.merchid
and ((a.AvgSalePerMon <0.0001 and a.EndQuantity> 0 )
or (a.AvgSalePerMon <> 0 and a.EndQuantity/30> a.AvgSalePerMon ))
and b.deptcode in ( '0101 ', '0102 ' ) and b.ManagementStyle=1
group by b.orgno,b.deptcode, b.sku,b.merchid,c.merchname,c.packingname,
c.specification,c.specunit,c.subunit,a.avgprice,b.RetailPrice,m.forWeekSaleQua,
--m.forWeekSaleQua,m1.LastSaleDate,p.OrderQuantity,
AvgSalePerMon,
a.endquantity,a.endcost ,b.LastPurchaseDate,i.bz
*/

读书人网 >SQL Server

热点推荐