0

次の処理を行うストアド プロシージャを作成する必要があります。

if CorporationId = xxxxx-xxxx-xxxxx-xxxx-xxxxx then
 clear transactions from x days back
if CorporationId = yyyyy-yyyy-yyyyy-yyyy-yyyyy then
 clear transactions from x days back
else 
 clear transactions from x days back
end if

それが私がやりたいことの背後にある考えです。特定の CorporationID GUID を取得して、それらの設定だけを変更し、他のすべてのユーザーにはデフォルトのままにしたいと考えています。

これは私がこれまでに持っているものですが、それを完了するのに十分なtsqlに精通していません:

DELETE FROM [Truck].[GpsReading] WHERE [DateTimeOfReading] <= DATEADD(DAY, -14, GetDate()) and PNRef IS NULL

それは削除の部分ですが、if チェックを行う方法がわかりません。

Microsoft の「else if else」の記事を見ました。ストアド プロシージャの開始前に CorporationId を指定したい場合、ここでどのように機能するのかわかりませんでした。

私が望む方法でそれを行う方法はありますか?

4

1 に答える 1

0

「X日前」はどこから来たのですか?設定表はありますか?設定テーブルがあると仮定すると、次のようなことができます

DECLARE @daysBack int = 0

SELECT @daysBack = PeriodToClear from settings where CorporationId = @CorporationId

DELETE FROM [Truck].[GpsReading] WHERE [DateTimeOfReading] <= DATEADD(DAY, @daysBack, GetDate()) and PNRef IS NULL
AND CorporationId = @CorporationId

@CorporationId は、ストア プロシージャに渡すパラメーターです。

私にとっての最後のチェックは、その特定の CorporationId よりも多くのデータが同じテーブルにあるように見えることです。

于 2013-09-27T15:56:57.290 に答える