2018年5月23日 星期三

以另存新表來簡化資料存取語法

有些表格通常只有代碼,為了取得名稱,需要先串接代碼以取得名稱,而串接語法往往造成SQL中包含冗長的串接語法,去處理代碼化名稱的動作,為了簡化資料存取語法,應先將串接代碼取得名稱的SQL結果另存成新表,可簡易運用以下 SQL達成:

create table new_table as select ... from old_table

釋例:

原本取代碼的 SQL:

select a.*, b.名稱 as 科目名稱
from 明細分類帳 a, 基本代碼檔 b
where 1=1
and a.機關名稱=b.機關名稱
and a.送審年 = b.送審年
and a.總帳科目 = b.代碼
and cast(a.送審月 as decimal) = cast(b.送審月 as decimal)

建立包含代碼名稱之新表:

create table 新明細分類帳 as
select a.*, b.名稱 as 科目名稱
from 明細分類帳 a, 基本代碼檔 b
where 1=1
and a.機關名稱=b.機關名稱
and a.送審年 = b.送審年
and a.總帳科目 = b.代碼
and cast(a.送審月 as decimal) = cast(b.送審月 as decimal)
之後原來的 SQL即簡化為:

select *
from 新明細分類帳

沒有留言:

張貼留言