teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

typo

2016/07/27 07:47

投稿

hos
hos

スコア33

title CHANGED
File without changes
body CHANGED
@@ -43,11 +43,11 @@
43
43
  "2016-04-03", 1 //1のデータのみ
44
44
  "2016-04-04", 2 //1と2のデータ
45
45
  "2016-04-05", 1 //1のデータは23:59:59には終了していて2のデータのみ
46
- "2016-04-05", 1 //2のデータのみ
46
+ "2016-04-06", 1 //2のデータのみ
47
47
  ```
48
48
  といった感じになります。日付のところは、上記の例だと
49
49
  ```SQL
50
- SELECT 日付 FROM 日付マスタ WHERE 日付 BETWEEN '2016-04-01' AND '2016-04-05'
50
+ SELECT 日付 FROM 日付マスタ WHERE 日付 BETWEEN '2016-04-01' AND '2016-04-06'
51
51
  ```
52
52
  というように取り出せます。
53
53
 

2

結果セットの例示。

2016/07/27 07:47

投稿

hos
hos

スコア33

title CHANGED
File without changes
body CHANGED
@@ -25,4 +25,30 @@
25
25
 
26
26
  日付マスタのようなものはあるので、そこで1ヶ月分の日付のリストを作成し、LEFT OUTER JOIN させるようなことを考えています。
27
27
 
28
- ループさせるのではなくSQLで解決させるにはどうすればよいでしょうか?
28
+ ループさせるのではなくSQLで解決させるにはどうすればよいでしょうか?
29
+
30
+ どのような結果が欲しいか追記します。
31
+
32
+ たとえば、下記のようなレコードがあった場合
33
+ ```
34
+ ID,開始日時,終了日時
35
+ 1,"2016-04-02 01:00:00","2016-04-05 01:00:00"
36
+ 2,"2016-04-04 01:00:00",NULL
37
+ ```
38
+ 結果としては
39
+ ```
40
+ 日付,件数
41
+ "2016-04-01", 0 //1件もない
42
+ "2016-04-02", 1 //1のデータのみ
43
+ "2016-04-03", 1 //1のデータのみ
44
+ "2016-04-04", 2 //1と2のデータ
45
+ "2016-04-05", 1 //1のデータは23:59:59には終了していて2のデータのみ
46
+ "2016-04-05", 1 //2のデータのみ
47
+ ```
48
+ といった感じになります。日付のところは、上記の例だと
49
+ ```SQL
50
+ SELECT 日付 FROM 日付マスタ WHERE 日付 BETWEEN '2016-04-01' AND '2016-04-05'
51
+ ```
52
+ というように取り出せます。
53
+
54
+ わかりにくくて申し訳ありませんがよろしくお願いいたします。

1

日付マスタの使い方について修正。

2016/07/27 07:45

投稿

hos
hos

スコア33

title CHANGED
File without changes
body CHANGED
@@ -23,6 +23,6 @@
23
23
  AND (終了日時 < @対象日時 OR 終了日時 IS NULL)
24
24
  ```
25
25
 
26
- 日付マスタのようなものはあるので、そこで1ヶ月分の日付をSELECTすることは可能です。
26
+ 日付マスタのようなものはあるので、そこで1ヶ月分の日付のリスト作成し、LEFT OUTER JOIN させようなことを考えています。
27
27
 
28
28
  ループさせるのではなくSQLで解決させるにはどうすればよいでしょうか?