728x90
반응형
DB를 사용하다보면 Grid에 바인딩 해야하는 경우가 많다.
하지만 Table을 조회해보면 데이터는 Row기반으로 쭉 나열되있어서 가시성이 떨어진다.
그러므로 우린 데이터를 가로로 보기좋게 바꿔야하는 경우가 자주 발생한다.
아래의 사이트는 DB없이도 웹에서 쿼리를 작성하고 결과를 볼 수 있다.
작성한 쿼리는 아래의 주소에 있다.
http://sqlfiddle.com/#!4/2b6502/2
위의 사이트에 쿼리를 볼 수 없는 경우 아래에 스크린샷과, 텍스트를 참조해도 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
--CREATE TABLE
CREATE TABLE T_TEST(
SEQ INT,
SELL_DATE VARCHAR(10), --날짜
FRUIT_NAME VARCHAR(50), --과일 이름
FRUIT_QTY NUMBER --판매
);
--INSERT TEST DATA
INSERT INTO T_TEST
(SEQ,SELL_DATE,FRUIT_NAME,FRUIT_QTY)
VALUES
((SELECT NVL(MAX(SEQ),0)+1 FROM T_TEST),'2021-05-20','Apple',100);
INSERT INTO T_TEST
(SEQ,SELL_DATE,FRUIT_NAME,FRUIT_QTY)
VALUES
((SELECT NVL(MAX(SEQ),0)+1 FROM T_TEST),'2021-05-21','Banana',30);
INSERT INTO T_TEST
(SEQ,SELL_DATE,FRUIT_NAME,FRUIT_QTY)
VALUES
((SELECT NVL(MAX(SEQ),0)+1 FROM T_TEST),'2021-05-21','Apple',200);
INSERT INTO T_TEST
(SEQ,SELL_DATE,FRUIT_NAME,FRUIT_QTY)
VALUES
((SELECT NVL(MAX(SEQ),0)+1 FROM T_TEST),'2021-05-21','Cherry',1500);
INSERT INTO T_TEST
(SEQ,SELL_DATE,FRUIT_NAME,FRUIT_QTY)
VALUES
((SELECT NVL(MAX(SEQ),0)+1 FROM T_TEST),'2021-05-22','Banana',500);
INSERT INTO T_TEST
(SEQ,SELL_DATE,FRUIT_NAME,FRUIT_QTY)
VALUES
((SELECT NVL(MAX(SEQ),0)+1 FROM T_TEST),'2021-05-22','Durian',10);
INSERT INTO T_TEST
(SEQ,SELL_DATE,FRUIT_NAME,FRUIT_QTY)
VALUES
((SELECT NVL(MAX(SEQ),0)+1 FROM T_TEST),'2021-05-22','Pineapple',2000);
INSERT INTO T_TEST
(SEQ,SELL_DATE,FRUIT_NAME,FRUIT_QTY)
VALUES
((SELECT NVL(MAX(SEQ),0)+1 FROM T_TEST),'2021-05-23','Mango',100);
INSERT INTO T_TEST
(SEQ,SELL_DATE,FRUIT_NAME,FRUIT_QTY)
VALUES
((SELECT NVL(MAX(SEQ),0)+1 FROM T_TEST),'2021-05-23','Apple',50);
INSERT INTO T_TEST
(SEQ,SELL_DATE,FRUIT_NAME,FRUIT_QTY)
VALUES
((SELECT NVL(MAX(SEQ),0)+1 FROM T_TEST),'2021-05-23','Cherry',20);
INSERT INTO T_TEST
(SEQ,SELL_DATE,FRUIT_NAME,FRUIT_QTY)
VALUES
((SELECT NVL(MAX(SEQ),0)+1 FROM T_TEST),'2021-05-24','Pineapple',600);
INSERT INTO T_TEST
(SEQ,SELL_DATE,FRUIT_NAME,FRUIT_QTY)
VALUES
((SELECT NVL(MAX(SEQ),0)+1 FROM T_TEST),'2021-05-24','Banana',1000);
INSERT INTO T_TEST
(SEQ,SELL_DATE,FRUIT_NAME,FRUIT_QTY)
VALUES
((SELECT NVL(MAX(SEQ),0)+1 FROM T_TEST),'2021-05-24','Durian',5);
--SELECT QUERY1 (기초 데이터)
SELECT * FROM T_TEST;
--SELECT QUERY2 (결과 데이터)
SELECT R.FRUIT_NAME
, SUM(D20) AS "20"
, SUM(D21) AS "21"
, SUM(D22) AS "22"
, SUM(D23) AS "23"
, SUM(D24) AS "24"
FROM (
SELECT FRUIT_NAME
,CASE WHEN SUBSTR(SELL_DATE,9) = 20 THEN FRUIT_QTY ELSE 0 END AS D20
,CASE WHEN SUBSTR(SELL_DATE,9) = 21 THEN FRUIT_QTY ELSE 0 END AS D21
,CASE WHEN SUBSTR(SELL_DATE,9) = 22 THEN FRUIT_QTY ELSE 0 END AS D22
,CASE WHEN SUBSTR(SELL_DATE,9) = 23 THEN FRUIT_QTY ELSE 0 END AS D23
,CASE WHEN SUBSTR(SELL_DATE,9) = 24 THEN FRUIT_QTY ELSE 0 END AS D24
FROM T_TEST
)R
GROUP BY R.FRUIT_NAME
ORDER BY R.FRUIT_NAME;
|
cs |
-20,000-
728x90
반응형
'기억 > Database' 카테고리의 다른 글
[ORACLE]두 날짜 사이의 날짜 받아오기 + 일-월 포맷 (0) | 2020.01.28 |
---|