怎么根据时间比较数值?

reb525 2012-02-13 12:07:49
A时间 B ID C 数量

table1
A B C
2011-11-2 001 60
2011-11-7 001 90
2011-11-8 001 100
2011-11-6 002 40
2011-11-7 002 60

table2
B C
001 120
002 80

输出的table3
A B C
2011-11-7 001 20
2011-11-8 001 100
2011-11-6 002 20
2011-11-7 002 60

计算规则就是 根据 table2中的条件 分析table1 按照日期进行分析 保留日期靠后的数据!
这样的语句怎么写
...全文
73 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tjs_125 2012-02-13
  • 打赏
  • 举报
回复
row_number与CET公用表达式是SQL2005才有的,你应该是用sql 2000,所以会报错。
reb525 2012-02-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qianjin036a 的回复:]

SQL code
create table table1(A datetime,B varchar(10),C int)
insert into table1 select '2011-11-2','001',60
insert into table1 select '2011-11-7','001',90
insert into table1 select '2011-11-8','001'……
[/Quote]

你好 谢谢回复



(所影响的行数为 1 行)


(所影响的行数为 1 行)


(所影响的行数为 1 行)


(所影响的行数为 1 行)


(所影响的行数为 1 行)


(所影响的行数为 1 行)


(所影响的行数为 1 行)

服务器: 消息 156,级别 15,状态 1,行 1
在关键字 'with' 附近有语法错误。
服务器: 消息 195,级别 15,状态 1,行 2
'row_number' 不是可以识别的 函数名。
reb525 2012-02-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tjs_125 的回复:]

table3中红色的数据时怎么来的?
2011-11-7 001 20
2011-11-8 001 100
2011-11-6 002 20
2011-11-7 002 60
[/Quote]

比较后相减的出来的
-晴天 2012-02-13
  • 打赏
  • 举报
回复
create table table1(A datetime,B varchar(10),C int)
insert into table1 select '2011-11-2','001',60
insert into table1 select '2011-11-7','001',90
insert into table1 select '2011-11-8','001',100
insert into table1 select '2011-11-6','002',40
insert into table1 select '2011-11-7','002',60
create table table2(B varchar(10),C int)
insert into table2 select '001',120
insert into table2 select '002',80
go
;with c1 as(
select row_number()over(partition by B order by A desc)r,* from table1
),c2 as(
select a.r,a.A,a.B,(case when a.c<b.c then a.c else b.c end)C,(case when a.c<b.c then b.c-a.c else 0 end)D
from c1 a inner join table2 b on a.B=b.B and a.r=1
union all
select a.r,a.A,a.B,(case when a.c<b.d then a.c else b.d end)C,(case when a.c<b.d then b.d-a.c else 0 end)D
from c1 a inner join c2 b on a.B=b.B and a.r=b.r+1 and b.D>0
)select A,B,C from c2 order by B,A
/*
A B C
----------------------- ---------- -----------
2011-11-07 00:00:00.000 001 20
2011-11-08 00:00:00.000 001 100
2011-11-06 00:00:00.000 002 20
2011-11-07 00:00:00.000 002 60

(4 行受影响)

*/
go
drop table table1,table2
tjs_125 2012-02-13
  • 打赏
  • 举报
回复
table3中红色的数据时怎么来的?
2011-11-7 001 20
2011-11-8 001 100
2011-11-6 002 20
2011-11-7 002 60

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧