2017-06-26 2 views
-1

私は、TSALESFACTとDimDateという名前の2つのデータベーステーブルを作成しました。 TSALESFACTテーブルには、毎月の販売目標値が含まれています。 DimTimeには2005年1月1日から始まる日付の値が含まれています。t-sql月末挿入

CREATE TABLE [dbo].[TSalesFact](
[DateID] [smalldatetime] NULL, 
[YearID] [int] NOT NULL, 
[MonthID] [int] NOT NULL, 
[SeasonID] [char](10) NOT NULL, 
[DepartmentID] [char](10) NOT NULL, 
[SalesAmount] [int] NOT NULL 

CREATE TABLE [dbo].[dim_Date](
[ID] [int] NOT NULL, 
[Date] [datetime] NOT NULL, 
[Day] [char](2) NOT NULL, 
[DaySuffix] [varchar](4) NOT NULL, 
[DayOfWeek] [varchar](9) NOT NULL, 
[DOWInMonth] [tinyint] NOT NULL, 
[DayOfYear] [int] NOT NULL, 
[WeekOfYear] [tinyint] NOT NULL, 
[WeekOfMonth] [tinyint] NOT NULL, 
[Month] [char](2) NOT NULL, 
[MonthName] [varchar](9) NOT NULL, 
[Quarter] [tinyint] NOT NULL, 
[QuarterName] [varchar](6) NOT NULL, 
[Year] [char](4) NOT NULL, 
[StandardDate] [varchar](10) NULL, 
[HolidayText] [varchar](50) NULL) 

私はDailySalesTargetsという名前の新しいテーブルにこれらの販売目標値を挿入したいと思います。 しかし、この操作の主な目的は、月末の日付のそれぞれに目標の売上を書き込むことです。該当する月の日付の値はすべてゼロになります。この操作のための私の希望結果セットは、以下のようなものです:

DesiredResultset

どのように私はこれを達成することができますか?何か案が?

+0

SalesFactには毎日行がありますか? –

+0

ヒント:適切なソフトウェア(MySQL、Oracle、DB2など)とバージョンの両方でデータベースの質問にタグを付けると便利です。 'sql-server-2014'です。構文と機能の相違は、しばしば答えに影響します。 'tsql'は選択肢を絞り込みますが、データベースは指定しないことに注意してください。 – HABO

+0

元のTSalesFactテーブルには、毎月の販売目標値のみが含まれています。しかし、望ましい結果セットには、毎日の値が含まれている必要があります。これらの完全な日の値は0に設定されます。しかし、月末の値はTSalesFact月のデータからデータを受け取ります。 – innocentolaris73

答えて

0

これはあなたがやろうとしていることだと思います。

insert into [DailySalesTargets]([DateID],[YearID],[MonthID], 
           [SeasonID],[DepartmentID],[SalesAmount]) 
select d.[Date],d.[Year],d.[Month] 
,dptSeason.[SeasonID],dptSeason.[DepartmentID] 
,case when EOMONTH(d.[Date])=s.[DateID] then s.[SalesAmount] else 0 end as [SalesAmount] 
from [dbo].[dim_Date] d 
cross join (select distinct [DepartmentID],[SeasonID] from [dbo].[TSalesFact]) dptSeason 
left join [dbo].[TSalesFact] s on d.[Date] = s.[DateID] 
and s.[DepartmentID]=dptSeason.[DepartmentID] 
and s.[SeasonID]=dptSeason.[SeasonID] 
+0

大変ありがとうございます。@vkp。よくやった! – innocentolaris73

関連する問題