質問編集履歴

1

テーブル定義を追記しました。

2020/08/14 00:56

投稿

kswf
kswf

スコア1

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,102 @@
1
+ ```ここに言語を入力
2
+
3
+ 入力テーブル
4
+
5
+
6
+
7
+
8
+
9
+ CREATE table INTBL1
10
+
11
+ (
12
+
13
+ TENCD CHAR(3) NOT NULL,
14
+
15
+ SHMKCD CHAR(2) NOT NULL,
16
+
17
+ UCWKCD CHAR(4) NOT NULL,
18
+
19
+ STIDATE DATE NOT NULL,
20
+
21
+ RYUCD CHAR(1) NOT NULL,
22
+
23
+ KGK INTEGER ,
24
+
25
+ KBN CHAR (1),
26
+
27
+ PRIMARY KEY (TENCD, SHMKCD, UCWKCD, STIDATE, RYUCD, KGK)
28
+
29
+ );
30
+
31
+
32
+
33
+ 出力テーブル
34
+
35
+ CREATE table OUTTBL1
36
+
37
+ (
38
+
39
+ SHMKCD CHAR(2) NOT NULL,
40
+
41
+ UCWKCD CHAR(4) NOT NULL,
42
+
43
+ STIDATE DATE NOT NULL,
44
+
45
+ RYUCD CHAR(1) NOT NULL,
46
+
47
+ GKIKNS1 INTEGER,
48
+
49
+ GKIKGK1 INTEGER ,
50
+
51
+ GKIKNS2 INTEGER,
52
+
53
+ GKIKGK2 INTEGER ,
54
+
55
+ KBN CHAR (1),
56
+
57
+ PRIMARY KEY (SHMKCD, UCWKCD,STIDATE)
58
+
59
+ );
60
+
61
+
62
+
63
+
64
+
65
+
66
+
67
+ SELECT
68
+
69
+ SHMKCD,
70
+
71
+ UCWKCD,
72
+
73
+ STIDATE,
74
+
75
+ RYUCD,
76
+
77
+ CASE WHEN RYUCD = '1' THEN COUNT(STIDATE) ELSE 0 END,
78
+
79
+ CASE WHEN RYUCD = '1' THEN SUM(KGK) ELSE 0 END,
80
+
81
+ CASE WHEN RYUCD = '0' THEN COUNT(STIDATE) ELSE 0 END,
82
+
83
+ CASE WHEN RYUCD = '0' THEN SUM(KGK) ELSE 0 END,
84
+
85
+ CASE WHEN COUNT(KBN = '1') > 0 THEN '1' ELSE '0' END
86
+
87
+ FROM INTBL1
88
+
89
+ GROUP BY SHMKCD, UCWKCD, STIDATE
90
+
91
+ ;
92
+
93
+
94
+
95
+ エラー
96
+
97
+ SQL : 列"intbl1.ryucd"はGROUP BY句で出現しなければならないか、集約関数内で使用しなければなりません
98
+
1
- 参照元のテーブル
99
+ ```参照元のテーブル
2
100
 
3
101
  店コード
4
102
 
@@ -56,6 +154,6 @@
56
154
 
57
155
  とかselect文に書いてたら区分と理由コードはgroup by句で出現しなければならないか、集約関数内で使用しなければなりませんと怒られました。
58
156
 
59
-
157
+ 実際のテーブルは今さわれるところにないので、今てきとうに作りました。間違いがあるかもしれませんがとりあえずはこれでお願いします。
60
158
 
61
159
  dbはpostgresqlです