如何取两条记录之间的金额,请帮忙

marongc 2015-08-30 07:35:20


--表A
SELECT 1 AS ITEM, '07'AS PRONO, '2015-8-1'AS DAT, 5.4 AS PRI UNION ALL
SELECT 2 AS ITEM, '07'AS PRONO, '2015-8-18'AS DAT, 6.2 AS PRI UNION ALL
SELECT 3 AS ITEM, '07'AS PRONO, '2015-8-28'AS DAT, 6.8 AS PRI

--表B
SELECT 1 AS ITEM, '07'AS PRONO, '2015-8-13'AS DAT UNION ALL
SELECT 2 AS ITEM, '07'AS PRONO, '2015-8-17'AS DAT UNION ALL
SELECT 3 AS ITEM, '07'AS PRONO, '2015-8-19'AS DAT UNION ALL
SELECT 4 AS ITEM, '07'AS PRONO, '2015-8-29'AS DAT



/*
规则:
表B的第1,2条日期是在>表A的第1条,<表A的第2条,取第1条的金额
表B的第3条的日期是在>表A的第2条,<表A的第3条,取第2条的金额
表B的第4条的日期是在>表A的第3条,取第3条的金额

想得到的结果是表B 能抓到表A的金额:

1 07 2015-8-13 5.4
2 07 2015-8-17 5.4
3 07 2015-8-19 6.2
4 07 2015-8-29 6.8

*/

...全文
98 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangdaye1993 2015-08-31
  • 打赏
  • 举报
回复
引用 3 楼 misterliwei 的回复:
[quote=引用 2 楼 wangdaye1993 的回复:] 楼上的能实现功能,但是如果价格不是按照升序来的,而是没有规律的怎么破?
举个例子,比如?[/quote] 可以,我理解错了
misterliwei 2015-08-31
  • 打赏
  • 举报
回复
引用 2 楼 wangdaye1993 的回复:
楼上的能实现功能,但是如果价格不是按照升序来的,而是没有规律的怎么破?
举个例子,比如?
wangdaye1993 2015-08-31
  • 打赏
  • 举报
回复
楼上的能实现功能,但是如果价格不是按照升序来的,而是没有规律的怎么破?
misterliwei 2015-08-30
  • 打赏
  • 举报
回复

DECLARE @TA TABLE (ITEM INT, PRONO CHAR(2), DAT DATE, PRI FLOAT)
DECLARE @TB TABLE (ITEM INT, PRONO CHAR(2), DAT DATE)

--表A
INSERT INTO @TA
SELECT 1 AS ITEM, '07'AS PRONO, '2015-8-1'AS DAT, 5.4 AS PRI UNION ALL
SELECT 2 AS ITEM, '07'AS PRONO, '2015-8-18'AS DAT, 6.2 AS PRI UNION ALL
SELECT 3 AS ITEM, '07'AS PRONO, '2015-8-28'AS DAT, 6.8 AS PRI 
--表B
INSERT INTO  @TB
SELECT 1 AS ITEM, '07'AS PRONO, '2015-8-13'AS DAT UNION ALL
SELECT 2 AS ITEM, '07'AS PRONO, '2015-8-17'AS DAT UNION ALL
SELECT 3 AS ITEM, '07'AS PRONO, '2015-8-19'AS DAT UNION ALL
SELECT 4 AS ITEM, '07'AS PRONO, '2015-8-29'AS DAT 

SELECT *, (SELECT TOP 1 PRI FROM @TA A WHERE  A.DAT < B.DAT ORDER BY DAT DESC)
FROM @TB B

27,579

社区成员

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

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