我有一个包含大量相同ID行的表。例如,如果我在mySQL中查询以下内容:
......WHERE ID=10 OR ID = 11 OR ID=38 OR ID=49....
我会得到如下结果
id ---- visits ---- turnover ---- cost
10 ---- 20 ------- 10.000 ---- 500
11 ---- 43 ------ 190 ----- 200
and so on...
我的问题是如何以这样的方式呈现表格:
id ------ id ----- id
10 ------ 11 ------ *****
visits 20------- 43 ------ *****
turnover 10.000 --- 190 ---- *****
cost 500 ----- 200 ------- ****
我的查询。以上示例仅用于示例目的
jdbcDriver <- JDBC(driverClass="oracle.jdbc.OracleDriver", classPath="lib/ojdbc6.jar")
jdbcConnection <- dbConnect(jdbcDriver, "jdbc:oracle:thin:@//database.hostname.com:port/service_name_or_sid", "username", "password")
MyData <- dbGetQuery(jdbcConnection,"SELECT VALUE,DATA_POINT_DATE
FROM HD.HD_SE_HAM
WHERE TE_ID = 02342
and end_date = to_date('31/12/9999', 'dd/mm/yyyy')
and DATA_SKATA_DATE Between '01-Jan-10 ' and '30-Jun-13'
order by data_skata_date asc")
答案 0 :(得分:0)
好的,所以这是你想要的一个解决方案......
我完全建议你不要在mysql中执行此操作..但是在获得结果后,您应该使用其他编程语言。
CREATE TABLE HAM (
id INT,
visits INT,
turnover INT,
cost INT
);
INSERT INTO HAM VALUES
(10 , 20 , 10.000 , 500),
(11, 43 , 190 ,200),
(12, 53 , 180 ,100),
(13, 63 , 170 ,400),
(14, 73 , 160 ,500),
(15, 83 , 150 ,600),
(16, 93 , 140 ,700),
(17, 103, 130 , 800),
(18, 113, 120 , 900),
(19, 123, 110 , 1000),
(20, 133, 100 , 1100),
(21, 143, 90 ,1200);
( SELECT
' ',
MAX(CASE id WHEN 10 THEN id ELSE ' ' END) AS 'ID',
MAX(CASE id WHEN 11 THEN id ELSE ' ' END) AS 'ID',
MAX(CASE id WHEN 12 THEN id ELSE ' ' END) AS 'ID',
MAX(CASE id WHEN 13 THEN id ELSE ' ' END) AS 'ID',
MAX(CASE id WHEN 14 THEN id ELSE ' ' END) AS 'ID',
MAX(CASE id WHEN 15 THEN id ELSE ' ' END) AS 'ID',
MAX(CASE id WHEN 16 THEN id ELSE ' ' END) AS 'ID',
MAX(CASE id WHEN 17 THEN id ELSE ' ' END) AS 'ID',
MAX(CASE id WHEN 18 THEN id ELSE ' ' END) AS 'ID',
MAX(CASE id WHEN 19 THEN id ELSE ' ' END) AS 'ID',
MAX(CASE id WHEN 20 THEN id ELSE ' ' END) AS 'ID',
MAX(CASE id WHEN 21 THEN id ELSE ' ' END) AS 'ID'
FROM HAM
)
UNION
( SELECT
'VISITS',
MAX(CASE id WHEN 10 THEN visits ELSE ' ' END),
MAX(CASE id WHEN 11 THEN visits ELSE ' ' END),
MAX(CASE id WHEN 12 THEN visits ELSE ' ' END),
MAX(CASE id WHEN 13 THEN visits ELSE ' ' END),
MAX(CASE id WHEN 14 THEN visits ELSE ' ' END),
MAX(CASE id WHEN 15 THEN visits ELSE ' ' END),
MAX(CASE id WHEN 16 THEN visits ELSE ' ' END),
MAX(CASE id WHEN 17 THEN visits ELSE ' ' END),
MAX(CASE id WHEN 18 THEN visits ELSE ' ' END),
MAX(CASE id WHEN 19 THEN visits ELSE ' ' END),
MAX(CASE id WHEN 20 THEN visits ELSE ' ' END),
MAX(CASE id WHEN 21 THEN visits ELSE ' ' END)
FROM HAM
)
UNION
( SELECT
'TURNOVER',
MAX(CASE id WHEN 10 THEN turnover ELSE ' ' END),
MAX(CASE id WHEN 11 THEN turnover ELSE ' ' END),
MAX(CASE id WHEN 12 THEN turnover ELSE ' ' END),
MAX(CASE id WHEN 13 THEN turnover ELSE ' ' END),
MAX(CASE id WHEN 14 THEN turnover ELSE ' ' END),
MAX(CASE id WHEN 15 THEN turnover ELSE ' ' END),
MAX(CASE id WHEN 16 THEN turnover ELSE ' ' END),
MAX(CASE id WHEN 17 THEN turnover ELSE ' ' END),
MAX(CASE id WHEN 18 THEN turnover ELSE ' ' END),
MAX(CASE id WHEN 19 THEN turnover ELSE ' ' END),
MAX(CASE id WHEN 20 THEN turnover ELSE ' ' END),
MAX(CASE id WHEN 21 THEN turnover ELSE ' ' END)
FROM HAM
)
UNION
( SELECT
'COST',
MAX(CASE id WHEN 10 THEN cost ELSE ' ' END),
MAX(CASE id WHEN 11 THEN cost ELSE ' ' END),
MAX(CASE id WHEN 12 THEN cost ELSE ' ' END),
MAX(CASE id WHEN 13 THEN cost ELSE ' ' END),
MAX(CASE id WHEN 14 THEN cost ELSE ' ' END),
MAX(CASE id WHEN 15 THEN cost ELSE ' ' END),
MAX(CASE id WHEN 16 THEN cost ELSE ' ' END),
MAX(CASE id WHEN 17 THEN cost ELSE ' ' END),
MAX(CASE id WHEN 18 THEN cost ELSE ' ' END),
MAX(CASE id WHEN 19 THEN cost ELSE ' ' END),
MAX(CASE id WHEN 20 THEN cost ELSE ' ' END),
MAX(CASE id WHEN 21 THEN cost ELSE ' ' END)
FROM HAM
);
+---------+------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+
| | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| VISITS | 20 | 43 | 53 | 63 | 73 | 83 | 93 | 103 | 113 | 123 | 133 | 143 |
| TURNOVER| 10 | 190 | 180 | 170 | 160 | 150 | 140 | 130 | 120 | 110 | 100 | 90 |
| COST | 500 | 200 | 100 | 400 | 500 | 600 | 700 | 800 | 900 | 1000 | 1100 | 1200 |
+---------+------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+