问题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.商品编号
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.商品编号
问题2:
select a.商品编号,sum(商品数量) 商品数量,max(a.商品批号) 商品批号 from
(
select * from table1
union all
select * from table2
) a
group by a.商品编号
非常感谢你的热情回答, 但第一个这样不行啊,第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===============================
现要求用"出库单","药品信息"和"入库单"组成一个视图
其中 出库单 和 入库单 是用药品编号,药品批号组成的一对多关系
取最大入库时间再次感谢帮忙!
其实第二个问题就是从这个视图取出两个不同"单据编号"的数据来组成另外一套数据
要求其中的相同药品编号的数量相加,如果药品批号不同,只取最大的一个.
--表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.出库单.单据编号
select [药品编号],[单价],[客户名称],[有效期],[入库时间],[开票员],[my_id],sum([数量]) [数量],max([药品批号]) [药品批号]
from
(
select * from [出库单]
union all
select * from [入库单]
)
group by [药品编号],[单价],[客户名称],[有效期],[入库时间],[开票员],[my_id],sum([数量]) [数量]
谢谢! rouqu(石林#黄果树) 第一个还是不行,
第二个可以