2016-05-26 4 views
0

私はいくつかのギャップを埋めるために必要なデータを持っています。2つの日付間のリストから日付と列のデータを生成する(SQL Server)

すべての部屋番号(部屋から部屋を選択)を選択し、各部屋の日付範囲のテーブルを生成する必要があります。

表が欠落している日付/部屋

Date  Room Occupents 
2016-05-11 100 2 
2016-05-11 102 2 
2016-05-12 102 1 
2016-05-12 104 3 
2016-05-12 105 1 
2016-05-13 101 2 

でどのように見えるかをリファレンス表Iは、2つの日付の間構築したいと思います。

Date  Room 
2016-05-11 100 
2016-05-11 101 
2016-05-11 102 
2016-05-11 103 
2016-05-11 104 
2016-05-11 105 
2016-05-12 100 
2016-05-12 101 
2016-05-12 102 
2016-05-12 104 
2016-05-12 105 
2016-05-13 100 
2016-05-13 101 
2016-05-13 102 
2016-05-13 103 
2016-05-13 104 
2016-05-13 105 

私はカーソルなしで参照テーブルを作成できることを望んでいました。誰でもアイデアはありますか?その週に使用されていない可能性がある、部屋のテーブルから引き出さまだ計上する必要がされていたであろう部屋103のためのデータが欠落してい

答えて

0
Declare @Table table (Date date,Room varchar(10),Occupents int) 
Insert into @Table (Date,Room,Occupents) values 
('2016-05-11','100',2), 
('2016-05-11','102',2), 
('2016-05-12','102',1), 
('2016-05-12','104',3), 
('2016-05-12','105',1), 
('2016-05-13','101',2) 

Select Date,Room 
From (Select Distinct Date from @Table) A 
Join (Select Distinct Room from @Table) B on 1=1 
Order by 1,2 

戻り

Date  Room 
2016-05-11 100 
2016-05-11 101 
2016-05-11 102 
2016-05-11 104 
2016-05-11 105 
2016-05-12 100 
2016-05-12 101 
2016-05-12 102 
2016-05-12 104 
2016-05-12 105 
2016-05-13 100 
2016-05-13 101 
2016-05-13 102 
2016-05-13 104 
2016-05-13 105 
+0

。 – Radmonius

+0

提供されたデータに部屋103がありませんでした。クイックフィックスは[Your Room Def Table]からDistinct Roomを選択することです –

+0

完全なユーザー定義の日付範囲(つまり、空きスペースや乗員データに依存しない)を追加する場合は、[A Date Table ]どこXとYの間の日付。または私は任意の定義された日付範囲を生成するUDFを投稿することができます –

関連する問題