CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

急:计算列的问题

楼主liuhui810(小苹果)2004-11-04 11:48:51 在 MS-SQL Server / 基础类 提问

两张表:  
  table1:   序号,日期,   数据             table2:   序号,属性  
                    1         200401       10                               1           ...  
                    2         200402       20                               2           ...  
                    .             .               .                               .           ...  
   
  在给定序号和日期的情况下,我想要得到这样的Sql:  
   
  select   table2.序号,table2.属性,   tbale1.日期,数据为200402和200401的差值(也就是20-10)  
  where   日期='200402'   and   table1.序号=table2.序号  
   
  怎样得到上面差值?这个sql怎么写?  
  问题点数:20、回复次数:9Top

1 楼netcoder(朱二)回复于 2004-11-04 12:53:55 得分 0

楼主把最终想要的记录集贴出来,别人也许就能明白Top

2 楼lovvver(ElephantTalk.Bright)回复于 2004-11-04 13:04:39 得分 0

select   b.序号,b.属性,   a.日期,a.数据-(select   数据   from   table1,a   where   序号=a.序号-1)  
  from   table1   a,table2   b  
  where   a.日期='200402'   and   a.序号=b.序号Top

3 楼lsxaa(小李铅笔刀)回复于 2004-11-04 13:05:12 得分 0

select   b.序号,  
                b.属性,    
                a.日期,  
                (a.数据-(select   数据   from   table1    
                                where   left(日期,4)=left(a.日期,4)    
                                            and   cast(right(日期,2)   as   int)=cast(right(a.日期,2)   as   int)-1))  
                as   数据  
  from   table1   a,table2   b  
  where   a.日期='200402'   and   a.序号=b.序号Top

4 楼liuhui810(小苹果)回复于 2004-11-04 13:23:46 得分 0

to:lsxaa(小李铅笔刀)    
  子查询返回的值多于一个。当子查询跟随在   =、!=、<、<=、>、>=   之后,或子查询用作表达式时,这种情况是不允许的。Top

5 楼liuhui810(小苹果)回复于 2004-11-04 13:32:11 得分 0

更改:table1的序号是table2的外健  
   
  两张表:  
  table1:   序号,日期,   数据             table2:   序号,属性  
                    1         200401       10                               1           ...  
                    1         200402       20                               2           ...  
                    .             .               .                               .           ...  
   
  在给定序号和日期的情况下,我想要得到这样的Sql:  
   
  select   table2.序号,table2.属性,   tbale1.日期,数据为200402和200401的差值(也就是20-10)  
  where   日期='200402'   and   table1.序号=table2.序号  
   
  怎样得到上面差值?这个sql怎么写?  
  Top

6 楼liuhui810(小苹果)回复于 2004-11-04 13:35:11 得分 0

to:netcoder(朱二)    
  我想要得到的数据集是:  
  table2.序号,table2.属性,tbale1.日期,所选月的数据-上个月的数据Top

7 楼luyajun(卢亚君)回复于 2004-11-04 13:49:39 得分 0

select   b.序号,b.属性,   a.日期,(a.数据-(select   SUM(数据)   from   table1   where   日期=CAST(CAST(a.日期   AS   INT)-1   AS   VARCHAR(6)))   数据   from   table1   a,table2   b   where   a.日期='200402'   and   a.序号=b.序号Top

8 楼lsxaa(小李铅笔刀)回复于 2004-11-04 13:51:37 得分 20

select   b.序号,  
                b.属性,    
                a.日期,  
                (a.数据-(select   top   1   数据   from   table1             --加top   1  
                                where   left(日期,4)=left(a.日期,4)    
                                            and   cast(right(日期,2)   as   int)=cast(right(a.日期,2)   as   int)-1))  
                as   数据  
  from   table1   a,table2   b  
  where   a.日期='200402'   and   a.序号=b.序号Top

9 楼liuhui810(小苹果)回复于 2004-11-04 14:19:17 得分 0

谢谢lsxaa(小李铅笔刀)   20分  
  版主揭帖Top

相关问题

  • 计算列的问题,呵呵,急救:)
  • 急需行列式计算的算法!!!
  • 急!列值相加的计算问题
  • 关于计算列
  • 删除计算列
  • 计算列问题,分情况计算
  • 一个关于计算列的问题······急!!!
  • 加急之一: 关于计算列! 请进来看看。
  • 加急之二:关于计算列! 如何加两个条件?
  • 加急之三:根据计算列画柱状图。

关键词

  • 数据
  • 属性
  • sql
  • 查询
  • 序号
  • 日期
  • 差值
  • bwhere
  • tbale
  • cast

得分解答快速导航

  • 帖主:liuhui810
  • lsxaa

相关链接

  • SQL Server类图书

广告也精彩

反馈

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