问题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.商品编号

解决方案 »

  1.   

    修正一下 不好意思
    问题2:
    select a.商品编号,sum(商品数量) 商品数量,max(a.商品批号) 商品批号 from 
    (
    select * from table1
    union all
    select * from table2
    ) a
    group by a.商品编号
      

  2.   

    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===============================
    现要求用"出库单","药品信息"和"入库单"组成一个视图
    其中 出库单 和 入库单 是用药品编号,药品批号组成的一对多关系
    取最大入库时间再次感谢帮忙!
      

  3.   

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

  4.   

    呵呵 你把所有字段都选上肯定不行了 简单写一下
    --表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.出库单.单据编号
      

  5.   

    问题二写完睡觉了 对不对明天说:)
    select [药品编号],[单价],[客户名称],[有效期],[入库时间],[开票员],[my_id],sum([数量]) [数量],max([药品批号]) [药品批号]
    from 
    (
    select * from [出库单]
    union all
    select * from [入库单]

    group by [药品编号],[单价],[客户名称],[有效期],[入库时间],[开票员],[my_id],sum([数量]) [数量]
      

  6.   

    这几天比较忙,直到今天才有时间上来
    谢谢!  rouqu(石林#黄果树) 第一个还是不行,
    第二个可以