とCASE文の私はトラブルLINQで(私が望む結果を返します)、以下のSQLを表現しようとしているが生じています:LINQは - サブクエリ
select
case r.CategoryID
when 2 then
case r.PrimaryRecord
when 1 then r.RecordID
else (select RecordID from Record where RecordGroupID = r.RecordGroupID and PrimaryRecord = 1)
end
else
r.RecordID
end
as RecordID
, r.FooID
from Record r
where
r.FooID = 3
各行レコードテーブルでは、一意のレコードIDを持っています。複数のRecordIDをCategoryID 2のRecordGroupIDに関連付けることができますが、そのうちの1つのみがPrimaryRecordフィールドの値が1になります。
次の表に示すデータがあれば、私の希望する出力はRecordID = 1、FooID = 3 PrimaryRecordであるが指定された行のFooIDがWhere句に一致するRecordGroupIDのRecordID。
RecordID RecordGroupID PrimaryRecord CategoryID FooID
1 1 1 2 1
2 1 0 2 1
3 1 0 2 3
SQL自体はおそらく世界で最も効率的なSQLではありませんが、私が思いつくのは最高でした。
誰かがこのクエリを表すためにLINQ文を作成するのを助けてくれれば幸いです。
't.PrimaryRecord'とは何ですか? 't'はどこでもあなたのクエリに定義されていません。 – Yuck
@Yuck - 謝罪は、タイプミスでした。今修正されました。 –
@Yuck - あなたが掲示して削除した答えに感謝したいと思います。私はSQLを書き直しましたが、オプションがなければ、どのように実行されたかを見るのは非常に便利でした。 –