[英]How do I to populate one table with the results of a query from a different table?
我創建了一個查詢,該查詢可以正常工作並提供所需的查詢,但是它不會在批處理文件中執行。如何用成功執行的查詢的結果填充另一個表?
這是我的查詢
select
isnull (start_charge.account,'No account at start') Start_charge_account
,Finish_charge.account start_charge_account
,case when start_charge.account is null then finish_charge.account else start_charge.account end "account"
,isnull (start_charge.Branch,99999999999) Start_charge_Branch
,Finish_charge.Branch Finish_charge_Branch
,case when start_charge.branch is null then finish_charge.branch else start_charge.branch end " branch"
,isnull (start_charge. site_number,99999999999) Start_charge_site_number
,Finish_charge. site_number Finish_charge_site_number
,case when start_charge.site_number is null then finish_charge.site_number else start_charge.site_number end "site_number"
,isnull (start_charge. service_code, 'No account at start') Start_charge_service_code
,Finish_charge. service_code finish_charge_service_code
,isnull (start_charge. item_code,'No account at start') Start_charge_item_code
,Finish_charge. item_code finish_charge_item_code
,isnull (start_charge. why_code, 'No account at start') Start_charge_why_code
,Finish_charge. why_code finish_charge_why_code
,isnull (start_charge. why_type, 'No account at start') Start_charge_why_type
,Finish_charge. why_type finish_charge_why_type
,Start_charge.Start_charge
,isnull(Finish_charge.Finish_charge,0) Finish_charge
,isnull(Start_charge.Start_charge,0)-isnull(Finish_charge.Finish_charge,0) Variance
from
(
select
account
,branch
,site_number
,service_code
,item_code
,why_code
,why_type
,sum(charge)
"Start_Charge"
from
cannon_commercial
where
1=1
and record_type = 'PS'
and period = ' 02/07/2013'
group by
account
,branch
,site_number
,service_code
,item_code
,why_code
,why_type
) start_charge
full outer join
( select
account
,branch
,site_number
,service_code
,item_code
,why_code
,why_type
,concat(account,site_number) "account - site"
,ISNULL(sum(charge),0) "Finish_Charge"
from
cannon_commercial
where
1=1
and record_type= 'PS'
and period = ' 04/06/2013'
group by
account
,branch
,site_number
,service_code
,item_code
,why_code
,why_type
)
Finish_charge
on Start_charge.Account = Finish_charge.Account
and Start_charge.Branch = Finish_charge.Branch
and Start_charge.site_number = Finish_charge.site_number
and Start_charge.item_code = Finish_charge.item_code
and Start_charge.service_code = Finish_charge.service_code
and Start_charge.why_code = Finish_charge.why_code
and Start_charge.why_type = Finish_charge.why_type
有兩種處理方法:
CREATE TABLE mytable AS
(SELECT ... )
將使用查詢結果創建一個新表。
INSERT INTO mytable (field1, field2, ...)
(SELECT ... )
會將查詢結果插入到現有表中。 您自然需要確保列列表匹配。 如果查詢返回的列列表與您的現有表完全匹配,那么您無需指定字段列表,您的語句將變得簡單
INSERT INTO mytable (SELECT ... )
是的,您可以填充現有表,該表具有與查詢返回的列和數據類型相同的列數和數據類型。
您的查詢可以是
INSERT INTO TABLE_NAME
(
select
isnull (start_charge.account,'No account at start') Start_charge_account
,Finish_charge.account start_charge_account
,case when start_charge.account is null then finish_charge.account else start_charge.account end "account"
,isnull (start_charge.Branch,99999999999) Start_charge_Branch
,Finish_charge.Branch Finish_charge_Branch
,case when start_charge.branch is null then finish_charge.branch else start_charge.branch end " branch"
,isnull (start_charge. site_number,99999999999) Start_charge_site_number
,Finish_charge. site_number Finish_charge_site_number
,case when start_charge.site_number is null then finish_charge.site_number else start_charge.site_number end "site_number"
,isnull (start_charge. service_code, 'No account at start') Start_charge_service_code
,Finish_charge. service_code finish_charge_service_code
,isnull (start_charge. item_code,'No account at start') Start_charge_item_code
,Finish_charge. item_code finish_charge_item_code
,isnull (start_charge. why_code, 'No account at start') Start_charge_why_code
,Finish_charge. why_code finish_charge_why_code
,isnull (start_charge. why_type, 'No account at start') Start_charge_why_type
,Finish_charge. why_type finish_charge_why_type
,Start_charge.Start_charge
,isnull(Finish_charge.Finish_charge,0) Finish_charge
,isnull(Start_charge.Start_charge,0)-isnull(Finish_charge.Finish_charge,0) Variance
from
(
select
account
,branch
,site_number
,service_code
,item_code
,why_code
,why_type
,sum(charge)
"Start_Charge"
from
cannon_commercial
where
1=1
and record_type = 'PS'
and period = ' 02/07/2013'
group by
account
,branch
,site_number
,service_code
,item_code
,why_code
,why_type
) start_charge
full outer join
( select
account
,branch
,site_number
,service_code
,item_code
,why_code
,why_type
,concat(account,site_number) "account - site"
,ISNULL(sum(charge),0) "Finish_Charge"
from
cannon_commercial
where
1=1
and record_type= 'PS'
and period = ' 04/06/2013'
group by
account
,branch
,site_number
,service_code
,item_code
,why_code
,why_type
)
Finish_charge
on Start_charge.Account = Finish_charge.Account
and Start_charge.Branch = Finish_charge.Branch
and Start_charge.site_number = Finish_charge.site_number
and Start_charge.item_code = Finish_charge.item_code
and Start_charge.service_code = Finish_charge.service_code
and Start_charge.why_code = Finish_charge.why_code
and Start_charge.why_type = Finish_charge.why_type
)
確保表TABLE_NAME已經存在,並且具有與查詢返回的數據類型相同的列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.