1

次の 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() を使用するのは間違っていますか?

4

0 に答える 0