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号....当天的定货数量
...全文
77 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
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 有供应日期呢

34,838

社区成员

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

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