CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

百分求两个答案

楼主shamihu()2004-09-02 00:47:49 在 MS-SQL Server / 基础类 提问

1.   这样是视图怎样建立  
  有三个表A,B,C   关系是   A   和   B   是一对一关系,   A   和   C   是一对多关系  
  其中的关联字段是各表的商品编号和商品批号  
  现在要求建立一个视图,   将   A,B,C表关联起来,   但麻烦的是只需要取C   表的最大入库时间  
  即这三个表组成的视图只有一条记录.  
   
  2.   从两个结构完全一样的表取数据合并成另外一个表,   但要求,   商品编号相同的数量累加,   商品批号只取最大的一个  
  注:   商品编号是关键字  
   
   
  急切盼望大家的帮忙,   先谢谢了!  
   
  问题点数:100、回复次数:11Top

1 楼rouqu(石林#黄果树)回复于 2004-09-02 01:03:05 得分 100

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

2 楼rouqu(石林#黄果树)回复于 2004-09-02 01:05:08 得分 0

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

3 楼solidpanther(╃╄╃我爱机器猫╄╃╄)回复于 2004-09-02 01:05:26 得分 0

最好给出表的具体结构Top

4 楼shamihu()回复于 2004-09-02 01:50:43 得分 0

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

5 楼shamihu()回复于 2004-09-02 01:55:15 得分 0

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

6 楼rouqu(石林#黄果树)回复于 2004-09-02 02:10:33 得分 0

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

7 楼rouqu(石林#黄果树)回复于 2004-09-02 02:19:11 得分 0

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

8 楼rouqu(石林#黄果树)回复于 2004-09-02 02:20:21 得分 0

时间栏不对   晕Top

9 楼shamihu()回复于 2004-09-05 03:29:53 得分 0

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

10 楼shamihu()回复于 2004-09-05 03:30:40 得分 0

现在我只好分2步进行了  
  看来一个视图无法解决  
  Top

11 楼rouqu(石林#黄果树)回复于 2004-09-05 10:48:44 得分 0

两个我都试了一下   应该可以的呀Top

相关问题

  • 三百分在线等答案
  • ---百分--- 求几道题的答案
  • 有两个问题想了很久还是没有答案
  • 迫切希望得到这两个问题的答案!(100分★★★)
  • 放分100 求个答案
  • 谁知道这个答案?
  • 应该有个答案吧
  • 应该有个答案吧
  • 百分求助简单问题答案,在线等!
  • 急,delphi通过OLE连接word,怎样设置页边距和表格的列宽!(有代码)!第一个给正确答案的给一百分!!

关键词

  • 字段
  • 视图
  • 商品
  • 批号
  • 表
  • 数量
  • 编号
  • 关系
  • max
  • 问题

得分解答快速导航

  • 帖主:shamihu
  • rouqu

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo