0

私はこのコードを持っています。これがこの仕事を成し遂げるための最も効率的な方法ではないことはわかっていますが、何と言えますか! 私はSQLが初めてで、すべてを1行ずつ行います。基本的に、テーブル内の特定のフィールドを更新しています。ご覧のとおり、リストが長すぎて、さらに多くの更新があるため、更新の合計を見つける必要があります。更新の合計数を知る必要があります。コードをWord文書にコピーして貼り付け、 Updateという単語の数を数えるだけでなく、SQLでそれを実行できるかどうかは誰にもわかりません。一時テーブルはそのようなことをすることができますか?

UPDATE tblMEP_MonthlyData   
    SET Consumption = 51634

FROM  tblMEP_Sites

JOIN tblMEP_Meters
ON tblMEP_Meters.SiteID = tblMEP_Sites.ID

JOIN tblMEP_Monthlydata
ON tblMEP_MonthlyData.MeterID = tblMEP_Meters.ID

WHERE ProjectID = 40
AND Consumption != 51634
AND tblMEP_Sites.Name LIKE '%Altgeld%'
AND Type = 1
AND BillingMonth = '2012-11-01 00:00:00.000'

-----------------------------------------------------------------------------

UPDATE tblMEP_MonthlyData   
    SET Consumption = 38370

FROM  tblMEP_Sites

JOIN tblMEP_Meters
ON tblMEP_Meters.SiteID = tblMEP_Sites.ID

JOIN tblMEP_Monthlydata
ON tblMEP_MonthlyData.MeterID = tblMEP_Meters.ID

WHERE ProjectID = 40
AND tblMEP_Sites.Name LIKE '%Altgeld%'
AND Consumption != 38370
AND Type = 1
AND BillingMonth = '2012-10-01 00:00:00.000'

-----------------------------------------------------------------------------

UPDATE tblMEP_MonthlyData   
    SET Consumption = 108610


FROM  tblMEP_Sites

JOIN tblMEP_Meters
ON tblMEP_Meters.SiteID = tblMEP_Sites.ID

JOIN tblMEP_Monthlydata
ON tblMEP_MonthlyData.MeterID = tblMEP_Meters.ID

WHERE ProjectID = 40
AND tblMEP_Sites.Name LIKE '%Avond%'
AND Consumption != 108610

AND Type = 1
AND BillingMonth = '2012-8-01 00:00:00.000'

-----------------------------------------------------------------------------

UPDATE tblMEP_MonthlyData   
    SET Consumption = 107923

FROM  tblMEP_Sites

JOIN tblMEP_Meters
ON tblMEP_Meters.SiteID = tblMEP_Sites.ID

JOIN tblMEP_Monthlydata
ON tblMEP_MonthlyData.MeterID = tblMEP_Meters.ID

WHERE ProjectID = 40
AND tblMEP_Sites.Name LIKE '%Avond%'
AND Consumption != 107923

AND Type = 1
AND BillingMonth = '2012-9-01 00:00:00.000'


---------------------------------------------------------------------------------
UPDATE tblMEP_MonthlyData   
    SET Consumption = 1442

FROM  tblMEP_Sites

JOIN tblMEP_Meters
ON tblMEP_Meters.SiteID = tblMEP_Sites.ID

JOIN tblMEP_Monthlydata
ON tblMEP_MonthlyData.MeterID = tblMEP_Meters.ID

WHERE ProjectID = 40
AND tblMEP_Sites.Name LIKE '%Belmont-cragin Pre-k%'
AND Consumption != 1442

AND Type = 1
AND BillingMonth = '2012-7-01 00:00:00.000'

-----------------------------------------------------------------------------


UPDATE tblMEP_MonthlyData   
    SET Consumption = 1477


FROM  tblMEP_Sites

JOIN tblMEP_Meters
ON tblMEP_Meters.SiteID = tblMEP_Sites.ID

JOIN tblMEP_Monthlydata
ON tblMEP_MonthlyData.MeterID = tblMEP_Meters.ID

WHERE ProjectID = 40
AND tblMEP_Sites.Name LIKE '%Belmont%'
AND Consumption != 1477


AND Type = 1
AND BillingMonth = '2012-8-01 00:00:00.000'

-----------------------------------------------------------------------------


UPDATE tblMEP_MonthlyData   
    SET Consumption = 1636

FROM  tblMEP_Sites

JOIN tblMEP_Meters
ON tblMEP_Meters.SiteID = tblMEP_Sites.ID

JOIN tblMEP_Monthlydata
ON tblMEP_MonthlyData.MeterID = tblMEP_Meters.ID

WHERE ProjectID = 40
AND tblMEP_Sites.Name LIKE '%Belmont%'
AND Consumption != 1636

AND Type = 1
AND BillingMonth = '2012-9-01 00:00:00.000'

-----------------------------------------------------------------------------


UPDATE tblMEP_MonthlyData   
    SET Consumption = 1451


FROM  tblMEP_Sites

JOIN tblMEP_Meters
ON tblMEP_Meters.SiteID = tblMEP_Sites.ID

JOIN tblMEP_Monthlydata
ON tblMEP_MonthlyData.MeterID = tblMEP_Meters.ID

WHERE ProjectID = 40
AND tblMEP_Sites.Name LIKE '%Belmont%'
AND Consumption != 1451

AND Type = 1
AND BillingMonth = '2012-10-01 00:00:00.000'

-----------------------------------------------------------------------------


UPDATE tblMEP_MonthlyData   
    SET Consumption = 1615

FROM  tblMEP_Sites

JOIN tblMEP_Meters
ON tblMEP_Meters.SiteID = tblMEP_Sites.ID

JOIN tblMEP_Monthlydata
ON tblMEP_MonthlyData.MeterID = tblMEP_Meters.ID

WHERE ProjectID = 40
AND tblMEP_Sites.Name LIKE '%Belmont%'
AND Consumption != 1615

AND Type = 1
AND BillingMonth = '2012-11-01 00:00:00.000'
4

3 に答える 3

3

あなたが欲しいのはです@@ROWCOUNT

各後、updateこれは更新された行数に設定されます。(こちらをご覧ください。)

これをコードに入れるという点では、次のようにすることができます。

declare @TotalRowsint = 0;

update . . .

set @TotalRows= @TotalRows+ @@ROWCOUNT;

update . . .

set @TotalRows= @TotalRows+ @@ROWCOUNT;

次に、合計を選択できます。各更新のカウントが必要な場合は、print @@ROWCOUNT代わりに使用できます。または、値をテーブルに挿入します。

@@ROWCOUNT を使用する場合は、ほとんどの SQL ステートメントが影響するため、注意してください。したがって、安全な方法は、すぐに別の変数に割り当ててから、その変数を使用することです。

declare @TotalRows int = 0, @NumRows int;

update . . .

set @NumRows = @@ROWCOUNT;
set @TotalRows= @TotalRows + @NumRows;
print @NumRows;
insert into AllMyUpdates(which, numrows)
    select 'This update', @NumRows;

update . . .
于 2013-07-17T16:25:25.917 に答える
1

@@ROWCOUNT変数を使用して、各ステートメントによって影響を受ける行数を収集できます。これをどこかに保存したい場合は、コードの各ブロックの後に次の行を追加できます。

set @RowsAffected=@@ROWCOUNT
insert into MyTableWithTOtals (RowsAffected) values (@RowsAffected)

もちろん@RowsAffected、最初に変数を宣言する必要があります。この方法を使用すると、行数と更新ステートメントの数もカウントできます。

于 2013-07-17T16:28:45.180 に答える
0

使ってください

select @@Rowcount

更新ステートメントの最後に。

于 2013-07-17T16:26:05.640 に答える