0

私には 2 つの見方があります。あるビューには、顧客の契約の有効期限が表示されます。もう 1 つは、顧客の契約のすべての開始日を返します。満了した契約の更新額を知りたくない。原則として、契約満了後90日以内に契約を開始する必要があります。

http://d.pr/i/bITI

分析期間が 2013 年 1 月であるとします。有効期限は 2835.15 です。現在、この満了後 90 日以内に 2 つの (2835、1596) 契約が開始されています。

結果を取得するにはクエリが必要です。

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

多くのステートメントを試しましたが、この結果を得る方法が見つかりませんでした。何かアイデアはありますか?

ありがとう

4

1 に答える 1

0

これが私が試した答えです

表 1 :

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 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

比較したいパラメータを括弧で宣言できます

于 2013-05-03T09:20:43.603 に答える