次のTを実行する方法がわからないので、亜音速の2.2で-SQLクエリ:サブソニッククエリ条件A AND((条件B AND条件C)OR(条件D AND条件E AND条件F)
SELECT SalesRep, Location, InvoiceNumber, PONumber, POReceivedOn, SurgeryDate, Surgeon
FROM dbo.vSalesRepCommissionGrouped AS vsrcg
WHERE UserID IN (5, 6, 20)
AND ((SurgeryDate >= '2012-01-01'
AND SurgeryDate <= '2012-01-31'
)
OR (SurgeryDate >= '2011-12-01'
AND SurgeryDate <= '2011-12-31'
AND POReceivedOn >= '2012-01-01'
)
)
ORDER BY SurgeryDate ASC
私は、少なくとも10個の異なる方法で次亜音速の選択をしようとしましたが、私はそれは同じ結果を生成するために取得することはできません
new Select("SalesRep, Location, InvoiceNumber, PONumber, POReceivedOn, SurgeryDate, Surgeon")
.From(VSalesRepCommissionGrouped.Schema)
.WhereExpression("UserID").In(new[] { 5, 6, 20 })
.AndExpression("SurgeryDate").IsGreaterThanOrEqualTo(BeginDate).And("SurgeryDate").IsLessThanOrEqualTo(EndDate)
.Or("SurgeryDate").IsGreaterThanOrEqualTo(BeginDate.AddMonths(-1)).And("SurgeryDate").IsLessThanOrEqualTo(
EndDate.AddMonths(-1)).And("POReceivedOn").IsGreaterThanOrEqualTo(BeginDate).CloseExpression()
.OrderAsc("SurgeryDate");
でした誰かしてください。正しい方向に私を向ける?
ありがとうございました! - アンドリュー
それは近いです。 [vSalesRepCommissionGrouped]。[ユーザーID] IN(ユーザーID0In1、ユーザーID0In2、ユーザーID03))AND([dbo]。[vSalesRepCommissionGrouped]。[SurgeryDate]。最初のANDの後に別のかっこを開きません。 > [SurgeryDate] <= SurgeryDate2 AND [dbo]。[VSalesRepCommissionGrouped] [SurgeryDate] <= SurgeryDate3 OR [dbo]。[SurgeryDate] dbo]。[vSalesRepCommissionGrouped]。[POReceivedOn]> = POReceivedOn6))ORDER BY SurgeryDate ASC' – ajtatum
'AND'文の前後に括弧を入れる必要はなく、当然OR比較より優先されます。 [T-SQL演算子の優先順位](http://msdn.microsoft.com/en-us/library/ms190276.aspx)も参照してください。 – marapet
奇妙な。それでは: 'どこの[UserID] IN(UserID0In1、UserID0In2、UserID0In3)AND([SurgeryDate]> = SurgeryDate1 AND [SurgeryDate] <= SurgeryDate2またはSurgeryDate3 = SurgeryDate3 <= SurgeryDate4 AND [POReceivedOn]> = (5,6,20)AND(SurgeryDate> = '2012-01-01 AND SurgeryDate <=' 2012-01-31 'OR SurgeryDate> => '2011-12-01 'とSurgeryDate <=' 2011-12-31 'AND POReceivedOn> =' 2012-01-01 ')' – ajtatum