百分求两个答案

shamihu 2004-09-02 12:47:49
1. 这样是视图怎样建立
有三个表A,B,C 关系是 A 和 B 是一对一关系, A 和 C 是一对多关系
其中的关联字段是各表的商品编号和商品批号
现在要求建立一个视图, 将 A,B,C表关联起来, 但麻烦的是只需要取C 表的最大入库时间
即这三个表组成的视图只有一条记录.

2. 从两个结构完全一样的表取数据合并成另外一个表, 但要求, 商品编号相同的数量累加, 商品批号只取最大的一个
注: 商品编号是关键字


急切盼望大家的帮忙, 先谢谢了!

...全文
90 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
rouqu 2004-09-05
  • 打赏
  • 举报
回复
两个我都试了一下 应该可以的呀
shamihu 2004-09-05
  • 打赏
  • 举报
回复
现在我只好分2步进行了
看来一个视图无法解决
shamihu 2004-09-05
  • 打赏
  • 举报
回复
这几天比较忙,直到今天才有时间上来
谢谢! rouqu(石林#黄果树)

第一个还是不行,
第二个可以

rouqu 2004-09-02
  • 打赏
  • 举报
回复
时间栏不对 晕
rouqu 2004-09-02
  • 打赏
  • 举报
回复
问题二写完睡觉了 对不对明天说:)
select [药品编号],[单价],[客户名称],[有效期],[入库时间],[开票员],[my_id],sum([数量]) [数量],max([药品批号]) [药品批号]
from
(
select * from [出库单]
union all
select * from [入库单]
)
group by [药品编号],[单价],[客户名称],[有效期],[入库时间],[开票员],[my_id],sum([数量]) [数量]
rouqu 2004-09-02
  • 打赏
  • 举报
回复
呵呵 你把所有字段都选上肯定不行了 简单写一下
--表1和表3关联分组求最大 表2再关联
SELECT dbo.出库单.药品编号,dbo.出库单.客户名称, dbo.出库单.出库时间,
dbo.出库单.开票员, dbo.出库单.单据编号, MAX(dbo.入库单.入库时间) AS 入库时间
FROM dbo.出库单 INNER JOIN dbo.入库单
ON dbo.出库单.药品编号 = dbo.入库单.药品编号 AND dbo.出库单.药品批号 = dbo.入库单.药品批号
GROUP BY dbo.出库单.药品编号,dbo.出库单.客户名称, dbo.出库单.出库时间,
dbo.出库单.开票员, dbo.出库单.单据编号
shamihu 2004-09-02
  • 打赏
  • 举报
回复
TO: rouqu(石林#黄果树)

第二个问题看来也不行,
其实第二个问题就是从这个视图取出两个不同"单据编号"的数据来组成另外一套数据
要求其中的相同药品编号的数量相加,如果药品批号不同,只取最大的一个.


shamihu 2004-09-02
  • 打赏
  • 举报
回复
TO: rouqu(石林#黄果树)
非常感谢你的热情回答, 但第一个这样不行啊,第2个我还没试验.

create view viewname as
SELECT dbo.出库单.药品编号, dbo.药品信息.商品规格, dbo.药品信息.商品名称,
dbo.药品信息.货位号, dbo.药品信息.单位, dbo.出库单.数量, dbo.出库单.单价,
dbo.出库单.单价 * dbo.出库单.数量 AS 金额, dbo.药品信息.产地, dbo.药品信息.规格,
dbo.出库单.药品批号, dbo.药品信息.质量情况, dbo.入库单.有效期,
dbo.药品信息.牌价, dbo.药品信息.类别, dbo.药品信息.包装, dbo.药品信息.税率,
dbo.药品信息.税额, dbo.药品信息.批号, dbo.出库单.客户名称, dbo.出库单.出库时间,
dbo.出库单.开票员, dbo.出库单.单据编号, MAX(dbo.入库单.入库时间) AS 入库时间
FROM dbo.出库单 INNER JOIN
dbo.药品信息 ON dbo.出库单.药品编号 = dbo.药品信息.商品编号
LEFT OUTER JOIN
dbo.入库单 ON dbo.出库单.药品编号 = dbo.入库单.药品编号 AND
dbo.出库单.药品批号 = dbo.入库单.药品批号
GROUP BY dbo.出库单.药品编号, dbo.出库单.药品批号
================================================================
三个表的结构如下:

CREATE TABLE [出库单] (
[药品编号] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[单价] [numeric](16, 2) NOT NULL CONSTRAINT [DF_出库单_单价] DEFAULT (0),
[数量] [int] NOT NULL CONSTRAINT [DF_出库单_数量] DEFAULT (0),
[药品批号] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[客户名称] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[出库时间] [datetime] NOT NULL CONSTRAINT [DF_出库单_出库时间] DEFAULT (getdate()),
[开票员] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[单据编号] [varchar] (12) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[my_id] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
CONSTRAINT [PK_出库单] PRIMARY KEY NONCLUSTERED
(
[my_id]
) ON [PRIMARY]
) ON [PRIMARY]
GO


CREATE TABLE [药品信息] (
[商品编号] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[商品规格] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[商品名称] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[货位号] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[单位] [varchar] (4) COLLATE Chinese_PRC_CI_AS NULL ,
[产地] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[规格] [numeric](10, 0) NULL ,
[质量情况] [varchar] (4) COLLATE Chinese_PRC_CI_AS NULL ,
[牌价] [numeric](12, 2) NULL ,
[类别] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[包装] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[税率] [numeric](7, 2) NULL ,
[税额] [numeric](14, 2) NULL ,
[批号] [varchar] (8) COLLATE Chinese_PRC_CI_AS NULL ,
CONSTRAINT [PK_药品信息] PRIMARY KEY NONCLUSTERED
(
[商品编号]
) ON [PRIMARY]
) ON [PRIMARY]
GO


CREATE TABLE [入库单] (
[药品编号] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[单价] [numeric](16, 2) NULL CONSTRAINT [DF_入库单_单价] DEFAULT (0),
[数量] [int] NULL CONSTRAINT [DF_入库单_数量] DEFAULT (0),
[药品批号] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[客户名称] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[有效期] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[入库时间] [datetime] NULL CONSTRAINT [DF_入库单_入库时间] DEFAULT (getdate()),
[开票员] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[my_id] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
CONSTRAINT [PK_入库单] PRIMARY KEY NONCLUSTERED
(
[my_id]
) ON [PRIMARY]
) ON [PRIMARY]
GO

===============================
现要求用"出库单","药品信息"和"入库单"组成一个视图
其中 出库单 和 入库单 是用药品编号,药品批号组成的一对多关系
取最大入库时间

再次感谢帮忙!
solidpanther 2004-09-02
  • 打赏
  • 举报
回复
最好给出表的具体结构
rouqu 2004-09-02
  • 打赏
  • 举报
回复
修正一下 不好意思
问题2:
select a.商品编号,sum(商品数量) 商品数量,max(a.商品批号) 商品批号 from
(
select * from table1
union all
select * from table2
) a
group by a.商品编号
rouqu 2004-09-02
  • 打赏
  • 举报
回复
问题1:
create view viewname as
select A.字段1,max(C.入库时间) 入库时间
from A inner join B on A.字段1 = B.字段1 left join C on A.字段x = C.字段x
group by A.字段1

问题2:
select a.商品编号,sum(商品数量),max(a.商品批号) 商品批号 from
(
select * from table1
union
select * from table2
) a
group by a.商品编号

34,590

社区成员

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

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