求一视图(在线等)

kuailewangzi1212 2005-01-05 03:42:08
现有四个表jbxx(基本信息)、rkxx(入库)、xsxx(销售)、ckxx(出库)
jbxx中的字段:sp_id,Name
rkxx中的字段有:sp_id,rksl,rkrq
xsxx中的字段:sp_id,xssl,xsrq
ckxx中的字段:sp_id,cksl,ckrq
其中类型全部为字符型
我想从中得到如下的纪录
///////////////////////////////
名称 入库数量 入库日期 销售数量 销售日期 出库数量 出库日期
Name rksl rkrq xssl xsrq cksl ckrq
黄瓜 20 2005-01-05 null null 1 2005-01-05
黄瓜 null null null null 1 2005-01-06
黄瓜 null null 1 2005-01-07 null null
...
...
///////////////////////////////
这是一个统计某一天的商品的流动情况,包括入库、销售、出库,如果没有入库(销售、出库)则入库(销售、出库)的信息(rksl,rkrq)为null.
...全文
77 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
funsuzhou 2005-01-05
  • 打赏
  • 举报
回复
select a.Name as 名称,
b.rksl as 入库数量,
b.rkrq as 入库日期,
c.xssl as 销售数量,
c.xsrq as 销售日期,
d.cksl as 出库数量,
d.ckrq as 出库日期
from jbxx a
right join rkxx b on a.sp_id=b.sp_id
right join xsxx c on a.sp_id=c.sp_id
right join ckxx d on a.sp_id=d.sp_id
子陌红尘 2005-01-05
  • 打赏
  • 举报
回复
create view v as
select
d.Name
e.rkrq,
e.rksl,
e.xsrq,
e.xssl,
e.ckrq,
e.cksl
from
jbxx d
inner join
(select
a.sp_id
a.rkrq,
a.rksl,
b.xsrq,
b.xssl,
c.ckrq,
c.cksl
from
(select sp_id,rkrq,sum(rksl) as rksl from rkxx group by sp_id,rkrq) a
full outer join
(select sp_id,xsrq,sum(xssl) as xssl from rkxx group by sp_id,xsrq) b
on
a.rkrq = b.rkrq and a.sp_id = b.sp_id
full outer join
(select sp_id,ckrq,sum(cksl) as cksl from rkxx group by sp_id,ckrq) c
on
a.rkrq = c.ckrq and a.sp_id = c.sp_id) e
on
d.sp_id = e.sp_id
kuailewangzi1212 2005-01-05
  • 打赏
  • 举报
回复
谢谢大家了
zjcxc 元老 2005-01-05
  • 打赏
  • 举报
回复
--如果只查询有数据的,则改用:

create view v_视图名
as
select a.Name
,b.rksl,b.rkrq,b.xssl,b.xsrq,b.cksl,b.ckrq
from jbxx a inner join(
select sp_id
,rksl=sum(rksl),rkrq=max(rkrq)
,xssl=sum(xssl),xsrq=max(xsrq)
,cksl=sum(rksl),ckrq=max(ckrq)
from(
select sp_id,rq=rkrq
,rksl,rkrq,xssl=null,xsrq=null,cksl=null,ckrq=null
from rkxx
union all
select sp_id,rq=xsrq
,rksl=null,rkrq=null,xssl,xsrq,cksl=null,ckrq=null
from xsxx
union all
select sp_id,rq=ckrq
,rksl=null,rkrq=null,xssl=null,xsrq=null,cksl,ckrq
from ckxx
)a group by sp_id,rq
)b on a.id=b.sp_id
子陌红尘 2005-01-05
  • 打赏
  • 举报
回复
create view v as
select
a.Name,
b.rksl,
b.rkrq,
c.xssl,
c.xsrq,
d.cksl,
d.ckrq
from
jbxx a
left join
rkxx b
on
a.sp_id = b.sp_id
left join
xsxx c
on
a.sp_id = c.sp_id and b.rkrq = c.xsrq
left join
ckxx d
on
a.sp_id = d.sp_id and b.rkrq = d.ckrq
zjcxc 元老 2005-01-05
  • 打赏
  • 举报
回复
其实应该只有一个日期才对,楼主要求的结果中,日期太多了
zjcxc 元老 2005-01-05
  • 打赏
  • 举报
回复
其实应该只有一个日期才对,楼主要求的结果中,日期太多了
  • 打赏
  • 举报
回复
select a.name as 名称,b.rksl as 入库数量,b.rkrq as 入库日期
,c.xsrq as 销售日期,d.cksl as 出库数量,d.ckrq as 出库日期
from jbxx a left join rkxx b
on a.sp_id=b.sp_id
left join xsxx c
on a.sp_id=c.sp_id
left join ckxx d
on c.sp_id=d.sp_id
zjcxc 元老 2005-01-05
  • 打赏
  • 举报
回复
create view v_视图名
as
select a.Name
,b.rksl,b.rkrq,b.xssl,b.xsrq,b.cksl,b.ckrq
from jbxx a left join(
select sp_id
,rksl=sum(rksl),rkrq=max(rkrq)
,xssl=sum(xssl),xsrq=max(xsrq)
,cksl=sum(rksl),ckrq=max(ckrq)
from(
select sp_id,rq=rkrq
,rksl,rkrq,xssl=null,xsrq=null,cksl=null,ckrq=null
from rkxx
union all
select sp_id,rq=xsrq
,rksl=null,rkrq=null,xssl,xsrq,cksl=null,ckrq=null
from xsxx
union all
select sp_id,rq=ckrq
,rksl=null,rkrq=null,xssl=null,xsrq=null,cksl,ckrq
from ckxx
)a group by sp_id,rq
)b on a.id=b.sp_id
chinaandys 2005-01-05
  • 打赏
  • 举报
回复
一楼.
select a.name as 名称,b.rksl as 入库数量,b.rkrq as 入库日期
,c.xsrq as 销售日期,d.cksl as 出库数量,d.ckrq as 出库日期
from jbxx a left join rkxx b
on a.sp_id=b.sp_id
left join xsxx c
on a.sp_id=c.sp_id
left join ckxx d
on c.sp_id=d.sp_id
老宛 2005-01-05
  • 打赏
  • 举报
回复
这个显示结果格式不太合理

34,575

社区成员

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

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