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

質問編集履歴

9

2017/01/06 10:54

投稿

amaguri
amaguri

スコア227

title CHANGED
File without changes
body CHANGED
@@ -32,9 +32,19 @@
32
32
 
33
33
  こういうデータがあり
34
34
  ①idが重複せず 最新の日付のflgが0のデータを取得。
35
- ②idが重複せず 現在の西暦月から-15ヶ月引いた西暦の4月1日から4月11日までの間で日付が12日に一番近いflgが1のデータを取得。
35
+ ②idが重複せず 現在の西暦月から-15ヶ月引いた西暦の4月1日から4月11日までの間で日付が12日に一番近いflgが1のデータを取得。
36
+
37
+ 2017年8月の場合
38
+ 2016年の3月になるので
36
- ③①②を①基準でjoinする。
39
+ 2016年とする。
37
40
 
41
+ 2017年1月の場合
42
+ 2015年10月なので
43
+ 2015年とする。
44
+
45
+
46
+ ③ ①と②を①基準でjoinする。
47
+
38
48
  ```
39
49
  完成イメージ
40
50
 

8

2017/01/06 10:54

投稿

amaguri
amaguri

スコア227

title CHANGED
File without changes
body CHANGED
@@ -5,6 +5,7 @@
5
5
  YYYYMMDDHHMMSS型として引数がPHPに渡される。
6
6
  ```
7
7
  abcテーブル
8
+ カラム
8
9
  card_no bytea型
9
10
  rank character (1)型
10
11
  ymd timestamp p with timezone型
@@ -17,7 +18,7 @@
17
18
  実際は2017-01-04 14:23.12.939117+09のような形で入っています。
18
19
 
19
20
  ```
20
- card_no rank ymd flg
21
+ card_no rank ymd flg
21
22
  1020 1 2017-02-12 0
22
23
  1020 2 2017-04-21 0
23
24
  1020 3 2016-12-23 1
@@ -37,7 +38,7 @@
37
38
  ```
38
39
  完成イメージ
39
40
 
40
- card_no rank ymd flg rank ymd flg
41
+ card_no rank ymd flg rank ymd flg
41
42
  1020 2 2017-04-21 0
42
43
  1050 1 2017-05-21 0 2 2016-04-11 1
43
44
  1040 1 2017-07-21 0 5 2016-04-04 1

7

2017/01/06 10:45

投稿

amaguri
amaguri

スコア227

title CHANGED
File without changes
body CHANGED
@@ -17,16 +17,16 @@
17
17
  実際は2017-01-04 14:23.12.939117+09のような形で入っています。
18
18
 
19
19
  ```
20
- card_no rank ymd flg
20
+ card_no rank ymd flg
21
- 1020 1 2017-02-12 0
21
+ 1020 1 2017-02-12 0
22
- 1020 2 2017-04-21 0
22
+ 1020 2 2017-04-21 0
23
- 1020 3 2016-12-23 1
23
+ 1020 3 2016-12-23 1
24
- 1050 1 2017-05-21 0
24
+ 1050 1 2017-05-21 0
25
- 1050 2 2016-04-11 1
25
+ 1050 2 2016-04-11 1
26
- 1050 3 2016-06-23 1
26
+ 1050 3 2016-06-23 1
27
- 1050 3 2016-04-21 1
27
+ 1050 3 2016-04-21 1
28
- 1040 1 2017-07-21 0
28
+ 1040 1 2017-07-21 0
29
- 1040 5 2016-04-04 1
29
+ 1040 5 2016-04-04 1
30
30
  ```
31
31
 
32
32
  こういうデータがあり
@@ -37,10 +37,10 @@
37
37
  ```
38
38
  完成イメージ
39
39
 
40
- card_no rank ymd flg rank ymd flg
40
+ card_no rank ymd flg rank ymd flg
41
- 1020 2 2017-04-21 0
41
+ 1020 2 2017-04-21 0
42
- 1050 1 2017-05-21 0 2 2016-04-11 1
42
+ 1050 1 2017-05-21 0 2 2016-04-11 1
43
- 1040 1 2017-07-21 0 5 2016-04-04 1
43
+ 1040 1 2017-07-21 0 5 2016-04-04 1
44
44
  ```
45
45
  のようなデータが
46
46
  取得できるためにはどのようにクエリを書けばいいでしょうか?

6

2017/01/06 10:44

投稿

amaguri
amaguri

スコア227

title CHANGED
File without changes
body CHANGED
@@ -3,19 +3,20 @@
3
3
  前提条件
4
4
  現在の日付が20170821133000
5
5
  YYYYMMDDHHMMSS型として引数がPHPに渡される。
6
-
6
+ ```
7
7
  abcテーブル
8
8
  card_no bytea型
9
9
  rank character (1)型
10
10
  ymd timestamp p with timezone型
11
11
  flg character(1)型
12
-
12
+ ```
13
13
  以下
14
14
 
15
15
  card_noは複合済みとして表記
16
16
  ymdはYYYY-MM-DDのように省略させていただきます。
17
17
  実際は2017-01-04 14:23.12.939117+09のような形で入っています。
18
18
 
19
+ ```
19
20
  card_no rank ymd flg
20
21
  1020 1 2017-02-12 0
21
22
  1020 2 2017-04-21 0
@@ -26,19 +27,21 @@
26
27
  1050 3 2016-04-21 1
27
28
  1040 1 2017-07-21 0
28
29
  1040 5 2016-04-04 1
30
+ ```
29
31
 
30
32
  こういうデータがあり
31
33
  ①idが重複せず 最新の日付のflgが0のデータを取得。
32
34
  ②idが重複せず 現在の西暦月から-15ヶ月引いたの西暦の4月1日から4月11日までの間で日付が12日に一番近いflgが1のデータを取得。
33
35
  ③①と②を①基準でjoinする。
34
36
 
37
+ ```
38
+ 完成イメージ
35
39
 
36
- 完成イメージ
37
40
  card_no rank ymd flg rank ymd flg
38
41
  1020 2 2017-04-21 0
39
42
  1050 1 2017-05-21 0 2 2016-04-11 1
40
43
  1040 1 2017-07-21 0 5 2016-04-04 1
41
-
44
+ ```
42
45
  のようなデータが
43
46
  取得できるためにはどのようにクエリを書けばいいでしょうか?
44
47
 

5

2017/01/06 10:43

投稿

amaguri
amaguri

スコア227

title CHANGED
File without changes
body CHANGED
@@ -34,10 +34,10 @@
34
34
 
35
35
 
36
36
  完成イメージ
37
- card_no rank ymd flg rank ymd flg
37
+ card_no rank ymd flg rank ymd flg
38
- 1020 2 2017-04-21 0
38
+ 1020 2 2017-04-21 0
39
- 1050 1 2017-05-21 0 2 2016-04-11 1
39
+ 1050 1 2017-05-21 0 2 2016-04-11 1
40
- 1040 1 2017-07-21 0 5 2016-04-04 1
40
+ 1040 1 2017-07-21 0 5 2016-04-04 1
41
41
 
42
42
  のようなデータが
43
43
  取得できるためにはどのようにクエリを書けばいいでしょうか?

4

2017/01/06 10:40

投稿

amaguri
amaguri

スコア227

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,10 @@
1
1
  PHPを利用してpostgreSQLを実行
2
2
 
3
+ 前提条件
4
+ 現在の日付が20170821133000
5
+ YYYYMMDDHHMMSS型として引数がPHPに渡される。
6
+
3
7
  abcテーブル
4
- 現在の日付が20170821133000だとした時
5
8
  card_no bytea型
6
9
  rank character (1)型
7
10
  ymd timestamp p with timezone型
@@ -10,19 +13,19 @@
10
13
  以下
11
14
 
12
15
  card_noは複合済みとして表記
13
- ymdはYYYYMMDDHHのように省略させていただきます。
16
+ ymdはYYYY-MM-DDのように省略させていただきます。
14
17
  実際は2017-01-04 14:23.12.939117+09のような形で入っています。
15
18
 
16
- card_no rank ymd flg
19
+ card_no rank ymd flg
17
- 1020 1 20170212 0
20
+ 1020 1 2017-02-12 0
18
- 1020 2 20170421 0
21
+ 1020 2 2017-04-21 0
19
- 1020 3 20161223 1
22
+ 1020 3 2016-12-23 1
20
- 1050 1 20170521 0
23
+ 1050 1 2017-05-21 0
21
- 1050 2 20160411 1
24
+ 1050 2 2016-04-11 1
22
- 1050 3 20160623 1
25
+ 1050 3 2016-06-23 1
23
- 1050 3 20160421 1
26
+ 1050 3 2016-04-21 1
24
- 1040 1 20170721 0
27
+ 1040 1 2017-07-21 0
25
- 1040 5 20160404 1
28
+ 1040 5 2016-04-04 1
26
29
 
27
30
  こういうデータがあり
28
31
  ①idが重複せず 最新の日付のflgが0のデータを取得。
@@ -31,10 +34,10 @@
31
34
 
32
35
 
33
36
  完成イメージ
34
- card_no rank ymd flg rank ymd rank
37
+ card_no rank ymd flg rank ymd flg
35
- 1020 2 20170421 0
38
+ 1020 2 2017-04-21 0
36
- 1050 1 20170521 0 2 20160411 1
39
+ 1050 1 2017-05-21 0 2 2016-04-11 1
37
- 1040 1 20170721 0 5 20160404 1
40
+ 1040 1 2017-07-21 0 5 2016-04-04 1
38
41
 
39
42
  のようなデータが
40
43
  取得できるためにはどのようにクエリを書けばいいでしょうか?

3

2017/01/06 10:39

投稿

amaguri
amaguri

スコア227

title CHANGED
File without changes
body CHANGED
@@ -2,8 +2,18 @@
2
2
 
3
3
  abcテーブル
4
4
  現在の日付が20170821133000だとした時
5
+ card_no bytea型
6
+ rank character (1)型
7
+ ymd timestamp p with timezone型
8
+ flg character(1)型
5
9
 
10
+ 以下
11
+
12
+ card_noは複合済みとして表記
13
+ ymdはYYYYMMDDHHのように省略させていただきます。
14
+ 実際は2017-01-04 14:23.12.939117+09のような形で入っています。
15
+
6
- aaa bbb ccc ddd
16
+ card_no rank ymd flg
7
17
  1020 1 20170212 0
8
18
  1020 2 20170421 0
9
19
  1020 3 20161223 1
@@ -15,13 +25,13 @@
15
25
  1040 5 20160404 1
16
26
 
17
27
  こういうデータがあり
18
- aaaが重複せず 最新の日付のdddが0のデータを取得。
28
+ idが重複せず 最新の日付のflgが0のデータを取得。
19
- aaaが重複せず 現在の西暦月から-15ヶ月引いたの西暦の4月1日から4月11日までの間で日付が12日に一番近いデータを取得。
29
+ idが重複せず 現在の西暦月から-15ヶ月引いたの西暦の4月1日から4月11日までの間で日付が12日に一番近いflgが1のデータを取得。
20
30
  ③①と②を①基準でjoinする。
21
31
 
22
32
 
23
33
  完成イメージ
24
- aaa bbb ccc ddd bbb ccc ddd
34
+ card_no rank ymd flg rank ymd rank
25
35
  1020 2 20170421 0
26
36
  1050 1 20170521 0 2 20160411 1
27
37
  1040 1 20170721 0 5 20160404 1
@@ -29,6 +39,6 @@
29
39
  のようなデータが
30
40
  取得できるためにはどのようにクエリを書けばいいでしょうか?
31
41
 
32
- ①は最新のものをwhere で最新のddd=0のもの
42
+ ①は最新のものをwhere で最新のflg=0のもの
33
- ②はwhereの条件はPHPで現在の西暦月をYYYYMMDDHHMMSS形式で引数から取得してYYYYMMから15ヶ月引いた西暦+4月1日〜11日からの間でddd=1のもの
43
+ ②はwhereの条件はPHPで現在の西暦月をYYYYMMDDHHMMSS形式で引数から取得してYYYYMMから15ヶ月引いた西暦+4月1日〜11日からの間でflg=1のもの
34
44
  ③それらをjoinすればいいのわかるのですがこれを組み合わせて書くにはどう書けばよろしいでしょうか?

2

2017/01/06 10:29

投稿

amaguri
amaguri

スコア227

title CHANGED
File without changes
body CHANGED
File without changes

1

2017/01/06 09:51

投稿

amaguri
amaguri

スコア227

title CHANGED
File without changes
body CHANGED
@@ -14,7 +14,7 @@
14
14
  1040 1 20170721 0
15
15
  1040 5 20160404 1
16
16
 
17
- こういうデータがあり
17
+ こういうデータがあり
18
18
  ①aaaが重複せず 最新の日付のdddが0のデータを取得。
19
19
  ②aaaが重複せず 現在の西暦月から-15ヶ月引いたの西暦の4月1日から4月11日までの間で日付が12日に一番近いデータを取得。
20
20
  ③①と②を①基準でjoinする。
@@ -30,5 +30,5 @@
30
30
  取得できるためにはどのようにクエリを書けばいいでしょうか?
31
31
 
32
32
  ①は最新のものをwhere で最新のddd=0のもの
33
- ②はwhereの条件はPHPで現在の西暦月をYYYYMMDDHHMMSS形式で引数から取得してYYYYMMから15ヶ月引いた西暦でddd=1のもの
33
+ ②はwhereの条件はPHPで現在の西暦月をYYYYMMDDHHMMSS形式で引数から取得してYYYYMMから15ヶ月引いた西暦+4月1日〜11日からの間でddd=1のもの
34
34
  ③それらをjoinすればいいのわかるのですがこれを組み合わせて書くにはどう書けばよろしいでしょうか?