次の SQL ステートメントがあります。
CASE
WHEN wt.pmtlr_oi IS NULL OR (SELECT COUNT(*) FROM mc.SCHEDENTRY WITH (NOLOCK) WHERE wt_oi = wt.wtskoi AND shedref_oi NOT IN (SELECT shdoi FROM mc.SCHDULE WITH (NOLOCK) WHERE aenm LIKE '%Breakin%')) = 0 AND wt.pmtlr_oi IS NULL
THEN 'Break-In'
ELSE 'Planned'
END AS schedule
私が翻訳したもの:
Schedule = wt.pmtlr_oi == null || (from sch in SCHEDENTRies where wt_oi == wt.wtskoi && shedref_oi !(from sc in SCHDULEs
where sc.Aenm.Contains("Breakin") select sc.Shdoi)).Count() == 0 && wt.pmtlr_oi == null ? "Break-In" : "Planned"}
select ステートメントでの表示は次のとおりです。
select new {Schedule = wt.pmtlr_oi == null || (from sch in SCHEDENTRies where wt_oi == wt.wtskoi && shedref_oi !(from sc in SCHDULEs
where sc.Aenm.Contains("Breakin") select sc.Shdoi)).Count() == 0 && wt.pmtlr_oi == null ? "Break-In" : "Planned"});
ただし、実行しようとすると、修正方法がわからない問題がいくつかあります。1 つ目は、コンパイラがここにある NOT IN を気に入らないように見えることです。
&& shedref_oi !(from sc in SCHDULEs
「クエリ本文は select 句または group 句で終了する必要があります」というエラーが表示されます。
コンパイラもこれを好まない:
select sc.Shdoi)).Count() == 0
外側のかっこで「Syntax error ',' expected」エラーが表示され、ピリオドで「Statement expected」エラー メッセージが表示されます。
これをトラブルシューティングする際に助けていただければ幸いです。
編集:
OK、コメントの後、LINQ ステートメントを次のように修正しました。
select new {Schedule = wt.pmtlr_oi == null || (from sch in SCHEDENTRies where wt_oi == wt.wtskoi && !(from sc in SCHDULEs
where sc.Aenm.Contains("Breakin") select sc.Shdoi).Contains(shedref_oi)).Count() == 0 && wt.pmtlr_oi == null ? "Break-In" : "Planned"});
そしてコンパイラはそれが好きです。ただし、.Count() はまだ好きではありません。「ステートメントが必要です」というエラーが表示されます。SQL SELECT COUNT(*) に .Count() を使用するのは間違っていますか?