我有一個令人困惑的SQL選擇語句(難看),我試圖寫在LINQ中。我正在努力獲取將執行的單個統計信息,而不是將預先選定的數據放入必須發送回服務器的列表中。複雜Linq到SQL在條件幫助
DECLARE @StartDate DATETIME ;
DECLARE @EndDate DATETIME ;
SET @pStartDate = '20100501'
SET @pEndDate = '20100531'
SELECT r.company ,r.trandate ,r.currency ,r.account ,r.credit ,r.debit
FROM dbo.Register r
INNER JOIN dbo.CompanyList c ON r.company = c.company
WHERE
r.trandate BETWEEN @pStartDate AND @pEndDate
AND LEN(r.currency) > 0
AND (
(r.account = 'XXX-ZZZ')
OR
(LEFT(r.account, 3) IN (SELECT LEFT(code, 3) FROM dbo.investments))
OR
(r.account IN (
SELECT account FROM dbo.CompanyInfo WHERE company = r.company
AND ((dateclosed IS NULL)
OR dateclosed >= @pStartDate)))
)
這是一個包含問題代碼的示例 - 帶有三個OR表達式的WHERE子句。我試過使用三個不同的查詢,然後concat()或union()返回不正確的reccord計數,因爲記錄可能匹配多個表達式。我將嘗試重新排列邏輯並創建一個新的TSQL版本,這可能會幫助我在LINQ中找到解決方案。
想法歡迎。
寫出LINQ替代你說的SQL版本是令人困惑的和醜陋的面前:P – Andomar 2010-07-21 19:21:02
我可能已經錯過了,但我沒有看到任何地方,你實際使用您的加盟對CompanyList ... – 2010-07-21 19:36:34
的加入CompanyList是一種限制性連接。數據並不像應該那樣乾淨,所以我加入到試圖確保只有好東西回來的表格中。 – secoast 2010-07-21 21:17:35