2つの値を格納するテーブルがあります。各顧客の「合計」と「未払い」。データは2つのファイルを使用してテーブルにアップロードされます。1つは「total」を取り込み、もう1つは「owing」を取り込みます。これは、customerIDごとに2つのレコードがあることを意味します。
customerID:--------Total:--------- Owing:
1234---------------- 1000----------NULL
1234-----------------NULL-----------200
2つのレコードをマージするストアドプロシージャを作成したいと思います。
customerID:--------Total:--------- Owing:
1234---------------- 1000----------200
COALESCEを使用した例を見たので、次のようにまとめます。
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
--Variable declarations
DECLARE @customer_id varchar(20)
DECLARE @total decimal(15,8)
DECLARE @owing decimal(15,8)
DECLARE @customer_name_date varchar(255)
DECLARE @organisation varchar(4)
DECLARE @country_code varchar(2)
DECLARE @created_date datetime
--Other Variables
DECLARE @totals_staging_id int
--Get the id of the first row in the staging table
SELECT @totals_staging_id = MIN(totals_staging_id)
from TOTALS_STAGING
--iterate through the staging table
WHILE @totals_staging_id is not null
BEGIN
update TOTALS_STAGING
SET
total = coalesce(@total, total),
owing = coalesce(@owing, owing)
where totals_staging_id = @totals_staging_id
END
END
何か案は?