我有兩個意見。一種觀點向我展示了客戶合同的到期日期。另一個是返回客戶合同的所有開始日期。我無法找出過期合同的續約金額。規則是,客戶必須在合同到期後的90天內簽訂合同。SQL Statement以時間範圍獲得合同續訂金額
假裝分析週期是2013年一月我有一個2835,15到期金額。現在我有兩個(2835,1596)合約在這個到期後的90天內開始。
我需要一個查詢得到的結果:
嘗試了很多的語句,但我發現沒有辦法得到這樣的結果。任何ides?
感謝
我有兩個意見。一種觀點向我展示了客戶合同的到期日期。另一個是返回客戶合同的所有開始日期。我無法找出過期合同的續約金額。規則是,客戶必須在合同到期後的90天內簽訂合同。SQL Statement以時間範圍獲得合同續訂金額
假裝分析週期是2013年一月我有一個2835,15到期金額。現在我有兩個(2835,1596)合約在這個到期後的90天內開始。
我需要一個查詢得到的結果:
嘗試了很多的語句,但我發現沒有辦法得到這樣的結果。任何ides?
感謝
下面是我試過的答案
表一:
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語句
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
你可以在括號中聲明你想要比較的參數
謝謝。 更改WHERE子句 'WHERE MONTH(T1.ContractEndDate)= 01 和年份(T1.ContractEndDate)= 2013 AND DATEDIFF(DAY,T1.ContractEndDate,T2.ContractStartDate)> = 0 AND DATEDIFF(DAY, T1.ContractEndDate,T2.ContractStartDate)<= 90 AND T1.CustomerNo = T2.CustomerNo ' 我會用更多的數據對它進行測試 – Andi 2013-05-03 09:39:07
另一個問題是,如果我在一個月內有超過一個客戶的到期時間。我想我應該使用MAX(ContractEndDate)來查看哪些合約可以作爲續訂值。 – Andi 2013-05-03 09:47:33
這是真的,但每個客戶的到期合同應該有一個有效的合同,所以我的意思是它取決於您的必要和業務角色,接受它,如果你喜歡答案hehe綠色接受按鈕來接受這個答案 – 2013-05-03 10:11:51
對不起,剛剛閱讀,我知道了等待 – 2013-05-03 09:02:14
sql server或mysql? – Edper 2013-05-03 09:22:57
Microsoft SQL Server – Andi 2013-05-03 09:33:46