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

邹建帮我啊,用了你的方法我的问题是解决了,但还有一点小问题,可以再帮我看看吗?

楼主suandetian()2005-04-03 18:34:50 在 MS-SQL Server / 应用实例 提问

http://community.csdn.net/Expert/topic/3904/3904693.xml?temp=.219494  
   
  -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -    
   
   
  --测试数据    
  create   table   details(productid   int,orderdate   datetime,quantity   int)  
  insert   into   details   values(1,'2005-3-2   14:00:00',20)  
  insert   into   details   values(1,'2005-3-2   15:00:00',null)  
  insert   into   details   values(1,'2005-3-2   15:40:00',15)  
  insert   into   details   values(1,'2005-3-3   6:00:00',20)  
  insert   into   details   values(2,'2005-3-2   15:30:00',null)  
  insert   into   details   values(3,'2005-3-2   14:00:00',22)  
   
  create   table   #temp(dates   datetime)  
  insert   into   #temp   values   ('2005-3-2   11:00:00')  
  insert   into   #temp   values   ('2005-3-2   14:00:00')  
  insert   into   #temp   values   ('2005-3-2   17:00:00')  
  go  
   
  --查询的存储过程    
  create   proc   p_qry  
  @productid   int  
  as  
  select   productid=@productid,a.dates,quantity=isnull(b.quantity,0)  
  from   #temp   a  
  left   join   details   b   on   b.productid=@productid   and   a.dates=b.orderdate  
  go  
   
  --调用  
  exec   p_qry   1  
  exec   p_qry   2  
  exec   p_qry   3  
  go  
   
  --删除测试  
  drop   table   #temp,details  
  drop   proc   p_qry  
   
  /*--结果  
  productid       dates                                                       quantity          
  -----------   -------------------------------   -----------  
  1                       2005-03-02   11:00:00.000                   0  
  1                       2005-03-02   14:00:00.000                   20  
  1                       2005-03-02   17:00:00.000                   0  
   
  (所影响的行数为   3   行)  
   
  productid       dates                                                       quantity          
  -----------   -------------------------------   -----------  
  2                       2005-03-02   11:00:00.000                   0  
  2                       2005-03-02   14:00:00.000                   0  
  2                       2005-03-02   17:00:00.000                   0  
   
  (所影响的行数为   3   行)  
   
  productid       dates                                                       quantity          
  -----------   -------------------------------   ---------------  
  3                       2005-03-02   11:00:00.000                   0  
  3                       2005-03-02   14:00:00.000                   22  
  3                       2005-03-02   17:00:00.000                   0  
   
  (所影响的行数为   3   行)  
  --*/  
   
  -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -    
   
   
   
   
   
   
  只好重开新贴了  
   
  邹建你好,谢谢你啊,用你的方法可以啊,但我又试了一下,就是能不能一下子统计出好几个productid的数据呢,现在是根据存储过程一个一个查,可不可以传进好几个productid号,然后生成记录呢  
  我的productid   是   varchar类型的  
  我试着改你的存储过程,把@product   int   改为   @product   varchar(200)  
  但我做出来的效果是错误的,再帮帮我啊  
   
  就是如果传进来:     1,2   ,结果要如下  
   
  productid             dates                                                     quantity                      
  -----------     -------------------------------     -----------      
  1                                             2005-03-02     11:00:00.000                                     0      
  1                                             2005-03-02     14:00:00.000                                     20      
  1                                             2005-03-02     17:00:00.000                                     0     2                                             2005-03-02     11:00:00.000                                     0      
  2                                             2005-03-02     14:00:00.000                                     0      
  2                                             2005-03-02     17:00:00.000 问题点数:0、回复次数:4Top

1 楼zjcxc(邹建)回复于 2005-04-03 20:17:24 得分 0

--测试数据    
  create   table   details(productid   int,orderdate   datetime,quantity   int)  
  insert   into   details   values(1,'2005-3-2   14:00:00',20)  
  insert   into   details   values(1,'2005-3-2   15:00:00',null)  
  insert   into   details   values(1,'2005-3-2   15:40:00',15)  
  insert   into   details   values(1,'2005-3-3   6:00:00',20)  
  insert   into   details   values(2,'2005-3-2   15:30:00',null)  
  insert   into   details   values(3,'2005-3-2   14:00:00',22)  
   
  create   table   #temp(dates   datetime)  
  insert   into   #temp   values   ('2005-3-2   11:00:00')  
  insert   into   #temp   values   ('2005-3-2   14:00:00')  
  insert   into   #temp   values   ('2005-3-2   17:00:00')  
  go  
   
  --查询的存储过程    
  create   proc   p_qry  
  @productid   varchar(1000)  
  as  
  set   nocount   on  
  declare   @i   int  
  set   @i=len(@productid)  
  if   isnull(@i,0)<1   return  
  set   rowcount   @i  
  select   id=identity(int,1,1)   into   #   from   syscolumns   a,syscolumns   b  
  set   rowcount   0  
  select   a.productid,a.dates,quantity=isnull(b.quantity,0)  
  from(  
  select   a.productid,b.dates  
  from(  
  select   productid=substring(@productid,id,charindex(',',@productid+',',id)-id)  
  from   #  
  where   substring(','+@productid,id,1)=','  
  )a,#temp   b  
  )a   left   join   details   b   on   a.productid=b.productid   and   a.dates=b.orderdate  
  order   by   a.productid,a.dates  
  go  
   
  --调用  
  exec   p_qry   '1'  
  exec   p_qry   '1,2'  
  exec   p_qry   '2,3'  
  exec   p_qry   '1,2,3'  
  go  
   
  --删除测试  
  drop   table   #temp,details  
  drop   proc   p_qry  
   
  /*--结果  
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
   
  (所影响的行数为   1   行)  
   
  productid     dates                                                           quantity    
  ----------   ---------------------------------   ----------------  
  1                     2005-03-02   11:00:00.000                       0  
  1                     2005-03-02   14:00:00.000                       20  
  1                     2005-03-02   17:00:00.000                       0  
   
  productid     dates                                                           quantity    
  ----------   ---------------------------------   ----------------  
  1                     2005-03-02   11:00:00.000                       0  
  1                     2005-03-02   14:00:00.000                       20  
  1                     2005-03-02   17:00:00.000                       0  
  2                     2005-03-02   11:00:00.000                       0  
  2                     2005-03-02   14:00:00.000                       0  
  2                     2005-03-02   17:00:00.000                       0  
   
  productid     dates                                                           quantity    
  ----------   ---------------------------------   ----------------  
  2                     2005-03-02   11:00:00.000                       0  
  2                     2005-03-02   14:00:00.000                       0  
  2                     2005-03-02   17:00:00.000                       0  
  3                     2005-03-02   11:00:00.000                       0  
  3                     2005-03-02   14:00:00.000                       22  
  3                     2005-03-02   17:00:00.000                       0  
   
  productid     dates                                                           quantity    
  ----------   ---------------------------------   ----------------  
  1                     2005-03-02   11:00:00.000                       0  
  1                     2005-03-02   14:00:00.000                       20  
  1                     2005-03-02   17:00:00.000                       0  
  2                     2005-03-02   11:00:00.000                       0  
  2                     2005-03-02   14:00:00.000                       0  
  2                     2005-03-02   17:00:00.000                       0  
  3                     2005-03-02   11:00:00.000                       0  
  3                     2005-03-02   14:00:00.000                       22  
  3                     2005-03-02   17:00:00.000                       0  
  --*/Top

2 楼suandetian()回复于 2005-04-04 00:09:07 得分 0

好强的邹建啊,这么晚了不好意思,真是太麻烦你了,让你费神了.  
  我刚才在本机试了一下,搞定,先谢了  
   
  目前是用   productid一个或几个传给存储过程让它计算出数据来,但我现在的productid是存在一张表里面即:  
   
    product   表    
   
    create   table   product   (productid   varchar(20))  
    insert   into   product   values   ('1')  
    insert   into   product   values   ('2')  
    insert   into   product   values   ('3')  
     
    可不可以不用把product表中的productid全部进行计算啊(而不用一个或几个地传给存储过程)  
   
   
  这是三个表的结构:  
   
  create   table   details(productid   int,orderdate   datetime,quantity   int)  
  insert   into   details   values(1,'2005-3-2   14:00:00',20)  
  insert   into   details   values(1,'2005-3-2   15:00:00',null)  
  insert   into   details   values(1,'2005-3-2   15:40:00',15)  
  insert   into   details   values(1,'2005-3-3   6:00:00',20)  
  insert   into   details   values(2,'2005-3-2   15:30:00',null)  
  insert   into   details   values(3,'2005-3-2   14:00:00',22)  
   
  create   table   #temp(dates   datetime)  
  insert   into   #temp   values   ('2005-3-2   11:00:00')  
  insert   into   #temp   values   ('2005-3-2   14:00:00')  
  insert   into   #temp   values   ('2005-3-2   17:00:00')  
   
   
    create   table   product   (productid   varchar(20))  
    insert   into   product   values   ('1')  
    insert   into   product   values   ('2')  
    insert   into   product   values   ('3')  
   
   
  Top

3 楼winternet(冬天)回复于 2005-04-04 10:30:25 得分 0

upTop

4 楼zjcxc(邹建)回复于 2005-04-04 10:38:21 得分 0

--那不是更简单  
   
  --查询的存储过程    
  create   proc   p_qry  
  as  
  select   a.productid,a.dates,quantity=isnull(b.quantity,0)  
  from(  
  select   a.productid,b.dates  
  from   product   a,#temp   b  
  )a   left   join   details   b   on   a.productid=b.productid   and   a.dates=b.orderdate  
  order   by   a.productid,a.dates  
  goTop

相关问题

  • 还有好的方法吗??
  • 还有更方便的方法吗?
  • 大家帮我解答一下类Hashtable的特点和主要方法.还有这个Vector.
  • 解决线程安全问题,除了Synchronize()方法,还有哪些方法?
  • 请帮我编个方法
  • 各位帮我想一想软件公司的软件保密应该怎样做?还有软件加密有那些方法
  • 除了传递值外,是否还有其它的方法.
  • Text框的属性方法 -- 还有什么?
  • 各路过路高手,还有其他方法吗?
  • 大家来说说还有什么方法可以实现COM?

关键词

  • qry
  • productid
  • insert
  • quantity
  • exec p
  • into details values
  • temp
  • dates
  • create
  • table

得分解答快速导航

  • 帖主:suandetian

相关链接

  • SQL Server类图书

广告也精彩

反馈

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