CTEが作成されていますが、次のようにテーブルを削除しようとしています。 CTE式は正常に動作しますが、IF ELSE
ステートメントはそうではありません。私は2つのテーブル内の行を削除したいときcount > 1
count(*) = 1
が、その後I ELSEIF
声明の中で、その後1テーブル内の行を削除し、第1 IF
の文では、T-SQLの共通テーブル式でIF ELSE文を使用
IF
with FinalSales (time, terminal_id, count) as
(
select time, terminal_id, count(*)
from Final_Sales
group by time, terminal_id
having count(*) = 1 -- condition here
)
delete Sales
from FinalSales
inner join Sales
on Sales.[time] = FinalSales.[time]
and Sales.terminal_id = FinalSales.terminal_id
ELSE IF
with FinalSales (time, terminal_id, count) as
(
select time, terminal_id, count(*)
from Final_Sales
group by time, terminal_id
having count(*) > 1 -- Condition here
)
delete Sales
from FinalSales
inner join Sales
on Sales.[time] = FinalSales.[time]
and Sales.terminal_id = FinalSales.terminal_id
delete #temp1
from FinalSales
inner join #temp1
on #temp1.[time] = FinalSales.[time]
and #temp1.terminal_id = FinalSales.terminal_id
。しかし、私のアプローチはうまくいきません。
IF ELSE
ステートメントにはどのように記述できますか?またはこれを行うための他の方法がありますか?シンプルな構造で
全体のクエリ、このような
if count(*) == 1:
delete Sales
else if count(*) > 1:
delete Sales, #temp1
何か。 t-sqlでどうすればいいですか?
すべてのアイデアをいただければ幸いです。
ビューとして純粋なPure SQLで行うことはできません。プロシージャ/パッケージまたはスクリプトでこれを行う必要があります。 – xQbert
@xQbert最後に、これらのステートメントは手順に入ります。 –
あなたは何回同じ質問をして、誰かが答えるために必要な細部を提供しないでしょうか? –