報表表樣多excel表格與sql查詢結果一一匹配_order by decode and 中間表
前言:報表是根據地區歸屬分為多個excel表格來填寫的。而有些歸屬地的表格可能
根據報表統計無資料。但為了sql查詢與excel表格一一匹配對應;這樣填充
報表時可以順序進行,不用交叉檢查匹配,節省了大量時間;但如何令未
查詢出來的歸屬也在sql查詢中顯示一行呢;
正文:
--構建測試 a為歸屬地 b為指標
SQL> create table t_match(a varchar2(100),b int);
Table created
--插入示例資料
SQL> insert into t_match values('渭南市',1);
1 row inserted
SQL> insert into t_match values('寶雞市',2);
1 row inserted
SQL> insert into t_match values('咸陽市',3);
1 row inserted
SQL> insert into t_match values('商洛市',4);
1 row inserted
SQL> commit;
Commit complete
--檢視示例表資料
SQL> select * from t_match;
A B
-------------------------------------------------------------------------------- ---------------------------------------
渭南市 1
寶雞市 2
咸陽市 3
商洛市 4
--實現的效果大致如下:
A B
---------------------
渭南市 1
咸陽市 3
漢中市 NULL
商洛市 4
寶雞市 2
--分析
1,按指定的列值排序,可採用order bydecode(a,'',1,'',2)
2, 如何把漢中市合併顯示在查詢結果中
3,看這個樣子,一個表難以實現;藉助中間表,
此表結構為:
create table t_map(a varchar2(100),orig_col int);
create sequence seq_map start with 1;
insert into t_map values('渭南市',seq_map.nextval);
insert into t_map values('咸陽市',seq_map.nextval);
insert into t_map values('漢中市',seq_map.nextval);
insert into t_map values('商洛市',seq_map.nextval);
insert into t_map values('寶雞市',seq_map.nextval);
commit;
--執行符合查詢結果的sql
select t_map.a,
t_match.b
from t_match,
t_map
where t_match.a(+)=t_map.a
order by t_map.orig_col;
--附上最終執行結果
SQL> select t_map.a,
2 t_match.b
3 from t_match,
4 t_map
5 where t_match.a(+)=t_map.a
6 order by t_map.orig_col;
A B
-------------------------------------------------------------------------------- ---------------------------------------
渭南市 1
咸陽市 3
漢中市
商洛市 4
寶雞市 2
--如果僅是單表且報表表樣的excel表格不太多的情況下
--此法的優點:不用建立中間表
缺點:可能有些歸屬地查詢無結果,與報表表樣不一一對應,需要部分進行核對填寫,稍多費一點人力
可採用如下sql
select a,b
from t_match
order by decode(a,'渭南市',1,'咸陽市',2,'漢中市',3,'商洛市',4,'寶雞市',5);
小結:1,中間表
2,左連線
3,order by
4,decode
5,decode轉換值各為序列值1,2,3
6,序列(其實與5道理相同)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-755293/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORDER對查詢結果進行排序排序
- 如何令sql查詢的結果集與客戶提供的excel表格中列的資料保持一致SQLExcel
- SQL 把查詢結果當作"表"來使用SQL
- mysql查詢結果多列拼接查詢MySql
- SQL語句將查詢結果插入到另一張表中SQL
- 通過SQL查詢兩張表中不匹配的行SQL
- Java資料庫分表與多執行緒查詢結果彙總Java資料庫執行緒
- 怎樣把分組查詢出來的結果插入到一張新表中?
- excel表格查詢功能在哪裡 excel表格怎麼快速查詢Excel
- excel表1和表2資料匹配 vlookup跨表兩個表格匹配Excel
- 使用查詢結果更新表的方法
- SQL“多欄位模糊匹配關鍵字查詢”SQL
- DBeaver 匯出多個查詢結果集
- Oracle中把一個查詢結果插入到一張表中Oracle
- PostgreSQL函式:返回表查詢結果集SQL函式
- SQL Server對組合查詢結果排序方法SQLServer排序
- xsl中,對xml文件查詢的結果再次查詢XML
- Oracle 表空間查詢相關sqlOracleSQL
- SQL語句查詢表結構SQL
- SQL總結(二)連表查詢SQL
- WPS股票價格查詢EXCEL表格Excel
- excel查詢快捷鍵是什麼 excel表格怎麼快速查詢Excel
- Excel表格樣式的套用與建立Excel
- SAP QM 檢驗批上各個MIC質檢結果的查詢報表?
- excel查重是怎麼查的 excel表格怎麼查詢重複項Excel
- SQL多個表實現聯合查詢SQL
- SQL單表查詢語句總結SQL
- navicat 匯出查詢結果
- mysql匯出查詢結果MySql
- 動態sql查詢結果多行的處理情況SQL
- SQL查詢結果集對注入的影響及利用SQL
- Excel 2010 SQL應用032 字元範圍的模糊匹配查詢ExcelSQL字元
- 查詢表中的連結行
- 有關表空間查詢的sql指令碼SQL指令碼
- [ORACLE BUG]查詢結果錯誤--臨時表並行Oracle並行
- PHP--動態生成sql查詢表格PHPSQL
- PLSQL Language Referenc-PL/SQL靜態SQL-帶有子查詢的查詢結果集處理SQL
- SQL Server 2008將計劃指南與查詢匹配SQLServer