SQL语句按时间范围获得合同续订金额

时间:2013-05-03 08:57:39

标签: sql tsql

我有两个观点。一个视图显示了客户合同的到期日期。另一个是返回客户合同的所有开始日期。我不想找出过期合同的续期金额。规则是,客户必须在合同到期后的90天内开始签订合同。

http://d.pr/i/bITI

假设分析期为2013年1月。我的到期金额为2835,15。现在我在到期后的90天内有两个(2835,1596)合约开始。

我需要一个查询来获得结果:

http://d.pr/i/3ztY

尝试了很多陈述,但我发现没办法得到这个结果。任何想法?

由于

1 个答案:

答案 0 :(得分:0)

这是我尝试过的答案

表一:

USE [NMIIFDB_DEV]
GO

/****** Object:  Table [dbo].[tes1]    Script Date: 5/3/2013 4:20:35 PM ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[tes1](
    [ContractEndDate] [date] NULL,
    [CustomerNo] [nvarchar](50) NULL,
    [ContractAmount] [numeric](18, 2) NULL
) ON [PRIMARY]

GO

表2

USE [NMIIFDB_DEV]
GO

/****** Object:  Table [dbo].[tes2]    Script Date: 5/3/2013 4:20:46 PM ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[tes2](
    [ContractStartDate] [date] NULL,
    [CustomerNo] [nvarchar](50) NULL,
    [ContractAmount] [numeric](18, 2) NULL
) ON [PRIMARY]

GO

SELECT STATEMENT

select YEAR(T1.ContractEndDate) AS ExpirationYear, MONTH(T1.ContractEndDate) as ExpirationMonth,

T1.ContractAmount AS ExpirationAmount, SUM(T2.ContractAmount) AS RenewalAmount
from tes1 T1, tes2 T2

where MONTH(T1.ContractEndDate) = 01 AND YEAR(T1.ContractEndDate) = 2013 AND MONTH(T2.ContractStartDate) = 01 AND YEAR(T2.ContractStartDate) = 2013 

GROUP BY YEAR(T1.ContractEndDate), MONTH(T1.ContractEndDate),
T1.ContractAmount

您可以在括号中声明要比较的参数