decode實現行轉列的查詢
--是這樣一個問題,資料庫中的欄位有 year, month, supermarkname,salesNumber.四個欄位。如何編寫SQL語句使得查詢出來的結果如下
year supermarkName 1月 2月 3月 4月 5月 。。。 (列名)
2012 超市1 500 300 200 100 200 。。。 (查詢出的結果)
drop table sales;
create table sales
(
year char(4),
supermarkname varchar2(20),
month varchar2(10),
salesnumber number(5)
)
/
insert into sales values('2012','超市1','1月',500);
insert into sales values('2012','超市1','2月',300);
insert into sales values('2012','超市1','3月',200);
insert into sales values('2012','超市1','4月',100);
insert into sales values('2012','超市1','5月',200);
insert into sales values('2012','超市1','6月',600);
insert into sales values('2012','超市2','1月',500);
insert into sales values('2012','超市2','2月',300);
insert into sales values('2012','超市2','3月',200);
insert into sales values('2012','超市2','4月',100);
insert into sales values('2012','超市2','5月',200);
insert into sales values('2012','超市2','6月',600);
insert into sales values('2013','超市1','1月',500);
insert into sales values('2013','超市1','2月',300);
insert into sales values('2013','超市1','3月',200);
insert into sales values('2013','超市1','4月',100);
insert into sales values('2013','超市1','5月',200);
insert into sales values('2013','超市1','6月',600);
commit;
--decode查詢語句,實現行轉列
select YEAR,SUPERMARKNAME,
sum(decode(month,'1月',salesnumber,0)) "1月",
sum(decode(month,'2月',salesnumber,0)) "2月",
sum(decode(month,'3月',salesnumber,0)) "3月",
sum(decode(month,'4月',salesnumber,0)) "4月",
sum(decode(month,'5月',salesnumber,0)) "5月",
sum(decode(month,'6月',salesnumber,0)) "6月",
sum(decode(month,'7月',salesnumber,0)) "7月",
sum(decode(month,'8月',salesnumber,0)) "8月",
sum(decode(month,'9月',salesnumber,0)) "9月",
sum(decode(month,'10月',salesnumber,0)) "10月",
sum(decode(month,'11月',salesnumber,0)) "11月",
sum(decode(month,'12月',salesnumber,0)) "12月"
from sales group by YEAR,SUPERMARKNAME;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28803801/viewspace-773999/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- /*列轉行查詢表資料*/
- 面試:Java 實現查詢旋轉陣列的最小數字面試Java陣列
- Databricks 第11篇:Spark SQL 查詢(行轉列、列轉行、Lateral View、排序)SparkSQLView排序
- 查詢演算法集:順序查詢、二分查詢、插值查詢、動態查詢(陣列實現、連結串列實現)演算法陣列
- Kettle實現行轉列
- sql實現行轉列SQL
- Access查詢實現Mysql的 limit 查詢MySqlMIT
- 分隔字串實現列轉行字串
- oracle中通過decode實現行變列的二維表統計展示Oracle
- 利用CGI方式實現Web查詢 (轉)Web
- Java 列舉查詢並不拋異常的實現Java
- 【記錄】sqlserver列轉行查詢 並將查詢結果用逗號分隔開SQLServer
- 轉:C++實現的變種二分查詢法(折半查詢)--二叉查詢樹C++
- [Shell] awk 實現列轉行例子
- List,DataTable實現行轉列的通用方案
- 對DBGrid 的巧妙用法實現查詢 (轉)
- oracle行轉列、列轉行、連續日期數字實現方式及mybatis下實現方式OracleMyBatis
- SSH:hiberate實現資料的查詢(單查詢和全查詢)
- 使用rownum及replace實現行轉列
- oracle中對LONG列進行查詢Oracle
- 實現 MyBatis 流式查詢的方法MyBatis
- Elasticsearch 查詢in 和 not in 的實現方式Elasticsearch
- 正確的折半查詢實現
- java實現折半查詢。Java
- 關於樹型結構資料遞迴查詢,轉非遞迴查詢的實現遞迴
- 老生常談SQL2005語句實現行轉列,列轉行SQL
- MYSQL SQLServer分頁查詢的實現MySqlServer
- mybatis學習 - 多表查詢的實現MyBatis
- Connect by實現樹查詢的妙用
- BST查詢結構與折半查詢方法的實現與實驗比較
- indexdb實現分頁查詢Index
- mysql多表查詢如何實現MySql
- 折半查詢(C++實現)C++
- mysql實現隨機查詢MySql隨機
- 微策略面試題:在旋轉後的陣列中查詢元素(二分查詢)面試題陣列
- mysql查詢結果多列拼接查詢MySql
- 陣列的主元素查詢陣列
- 實驗七: 查詢演算法的實現演算法