sql语句怎么写?

feixianglixia 2008-04-06 11:26:47
有如下表
表1 cggl_cgdd
fid int primary key,
rq datetime(8),
gysid ,int ---供应商编码
.....
表2 cggl_cgddmxb
fid int primary ,
cgddid int ,---fk ---外码 与cggl_cgdd fid 关联
wlid int, ----物料编码
dhsl numeric
.....

要求一个月内的物料供应信息
物料 供应商 上旬 中旬 下旬 总数 1 2 3 .....31


说明: 上旬 只上旬订货数量和,中旬只中旬定货数量和,下旬只下旬定货数量和.
1,2...31只当月1号 、2号....当天的定货数量
...全文
51 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
kaikai_kk 2008-04-06
看看
回复
feixianglixia 2008-04-06
谢谢两位,
我要结贴了!
回复
Limpire 2008-04-06
exec (@SQL)
回复
Limpire 2008-04-06
declare @Date1 datetime,@Date2 datetime, @Day varchar(2)
set @Date1='20080301'
set @Date2=dateadd(month,1,@Date1)

declare @SQL varchar(8000)
set @SQL='select 物料=b.wlid,供应商=a.gysid'
set @SQL=@SQL+',上旬=sum(case (day(b.日期)-1)/10 when 0 then b.dhsl else 0 end)'
set @SQL=@SQL+',中旬=sum(case (day(b.日期)-1)/10 when 1 then b.dhsl else 0 end)'
set @SQL=@SQL+',下旬=sum(case when (day(b.日期)-1)/10>1 then b.dhsl else 0 end)'
set @SQL=@SQL+',总数=sum(b.dhsl)'
set @Day=1
while @Day<=day(@Date2-1)
begin
set @SQL=@SQL+',['+@Day+']=sum(case day(b.日期) when '+@Day+' then b.dhsl else 0 end)'
set @Day=@Day+1
end

set @SQL=@SQL+' from cggl_cgdd as a join cggl_cgddmxb as b on a.fid=b.cgddid'
set @SQL=@SQL+' where b.日期>='''+convert(varchar,@Date1,121)+''''
set @SQL=@SQL+' and b.日期<'''+convert(varchar,@Date2,121)+''' group by b.wlid,a.gysid'
回复
feixianglixia 2008-04-06
表1 中的日期为定货日期
表1与表2 通过外键cgddid关联的

谢谢,我大体知道思路了

先试试看

回复
-狙击手- 2008-04-06
/*
表1 cggl_cgdd
fid int primary key,
rq datetime(8),
gysid ,int ---供应商编码
.....
表2 cggl_cgddmxb
fid int primary ,
cgddid int ,---fk ---外码 与cggl_cgdd fid 关联
wlid int, ----物料编码
dhsl numeric ,
rq datetime

要求一个月内的物料供应信息
物料 供应商 上旬 中旬 下旬 总数 1 2 3 .....31
*/

select 物料,
供应商,
datepart(m,rq) [month],
上旬= sum(case when day(rq) between 1 and 10 then dhsl else 0 end),
中旬= sum(case when day(rq) between 10 and 20 then dhsl else 0 end),
上旬= sum(case when day(rq)>20 then dhsl else 0 end),
总数 = sum(dhsl),
[1]=sum(case when day(rq)= 1 then dhsl else 0 end),
[2]=sum(case when day(rq)= 2 then dhsl else 0 end),
..................
from ta1 a,ta2 b
where a.gysid = b.gysid
group by 物料,
供应商,
datepart(m,rq)
回复
Limpire 2008-04-06
订货日期字段呢?
回复
-狙击手- 2008-04-06
表2 有供应日期呢
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-04-06 11:26
社区公告
暂无公告