2012-04-25 10 views
1

これはストアドプロシージャの部分スクリプトです。 私は自動的に(下のデータ結果)を更新することができるようにしたい次の 'P4' の列(など)カウント:たぶん「期間」列を実行しているデータ結果で自動的に更新する方法ストアドプロシージャ

/* 
RESULTS: 
66, 
221, 
0 
*/ 


DECLARE 
@APP_TOTAL INT 
, @DB_TOTAL INT 
, @OS_TOTAL INT 
, @YEAR INT 

SET @APP_TOTAL = (SELECT COUNT(*) 
    FROM [db_eCAM].[dbo].[tbl_SecChecks] 
WHERE LAYER = 'APP' AND [ENABLE] = 1) 
PRINT @APP_TOTAL 

SET @DB_TOTAL = (SELECT COUNT(*) 
    FROM [db_eCAM].[dbo].[tbl_SecChecks] 
WHERE LAYER = 'DB' AND [ENABLE] = 1) 
PRINT @DB_TOTAL 

SET @OS_TOTAL = (SELECT COUNT(*) 
    FROM [db_eCAM].[dbo].[tbl_SecChecks] 
WHERE LAYER = 'OS' AND [ENABLE] = 1) 
PRINT @OS_TOTAL 

SET @YEAR = 2013 

enter image description here

答えて

2

このような何か:

update mytable 
    set p4 = case 
     when description = 'APP_TOTAL' then @APP_TOTAL 
     when description = 'DB_TOTAL' then @DB_TOTAL 
     when description = 'OS' then @OS_TOTAL 
    end 
where description in ('APP_TOTAL', 'DB_TOTAL', 'OS'); 

デモ:http://www.sqlfiddle.com/#!3/f575c/1

期間を動的にするには、動的SQLを次のように使用します。http://www.sqlfiddle.com/#!3/f575c/5