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排序
- oracle中通過decode實現行變列的二維表統計展示Oracle
- 【記錄】sqlserver列轉行查詢 並將查詢結果用逗號分隔開SQLServer
- Excel資料庫轉MySQL,實現查詢Excel資料庫MySql
- List,DataTable實現行轉列的通用方案
- oracle行轉列、列轉行、連續日期數字實現方式及mybatis下實現方式OracleMyBatis
- SSH:hiberate實現資料的查詢(單查詢和全查詢)
- 查詢賬單功能的實現
- 實現 MyBatis 流式查詢的方法MyBatis
- mysql~GROUP_CONCAT實現關係表的行轉列MySql
- 直播平臺原始碼,FlinkSQL實現行轉列原始碼SQL
- 用listagg函式分組實現列轉行函式
- BST查詢結構與折半查詢方法的實現與實驗比較
- 行轉列與列轉行
- SQL 行轉列,列轉行SQL
- Mysql - 行轉列、列轉行MySql
- 陣列的主元素查詢陣列
- mysql查詢結果多列拼接查詢MySql
- indexdb實現分頁查詢Index
- python實現查詢糾錯Python
- mysql多表查詢如何實現MySql
- 折半查詢(C++實現)C++
- 實驗七: 查詢演算法的實現演算法
- Laravel Query Builder 複雜查詢案例:子查詢實現分割槽查詢 partition byLaravelUI
- sql的行轉列(PIVOT)與列轉行(UNPIVOT)SQL
- PostgreSQL 原始碼解讀(203)- 查詢#116(型別轉換實現)SQL原始碼型別
- js陣列擴充套件用lamada表示式實現查詢是否存在JS陣列套件
- 使用 NineData 實現備份集的實時查詢
- [轉帖]SQL Server簡潔查詢正在執行的程序SQLServer
- 二維陣列中的查詢陣列
- 陣列的查詢(搜尋):線性查詢和二分法查詢陣列
- PHP 實現二分查詢PHP
- [Hive]Hive實現抽樣查詢Hive
- jeefast實現科目成績查詢AST
- Oracle 查詢轉換Oracle
- 二維陣列查詢陣列
- Oracle行轉列、列轉行的Sql語句總結OracleSQL
- web3.js 互動 geth 實現轉賬餘額查詢功能WebJS