2017-02-09 10 views
-3

注文リストから最新の注文を探して注文日が3か月以上かどうかを調べるクエリを実行しています。C# - SELECT FROMクエリはMS SQLで動作しますが、SqlCommand内では動作しません。

私はOKで実行しているように見えるMS SQLでクエリを書かれているが、私は私のC#のコードに入れたとき、それはここでエラー

私を投げるには、コードがMS SQLで

SELECT CompanyID 
FROM (SELECT CompanyID, 
       OrderedDateTime, 
       Rank() over (partition by CompanyID order by OrderID DESC) RankOrder 
     FROM dbo.Orders OD1) TBL 
WHERE RankOrder = 1 
AND OrderedDateTime <= DATEADD(mm,-2,GetDate()) 

ですこれは私がMS SQLクエリを実行すると、それは正しいですが、私はC#でコードを実行すると、それは次のエラーを与える会社のIDのリストを与える

cmd.CommandText = "SELECT CompanyID FROM dbo.Companies WHERE CompanyID IN (SELECT CompanyID FROM (SELECT CompanyID, OrderedDateTime, Rank() over (partition by CompanyID order by OrderID DESC) RankOrder FROM dbo.Orders OD1) TBL WHERE RankOrder = 1 AND OrderedDateTime <= DATEADD(mm,-3,getDate())"; 

私のプロジェクトのコードです:

Additional information: Incorrect syntax near 'TBL'. 

誰にもこれが起こっている理由とそれを修正する方法について説明できますか?

おかげ

+0

2つのクエリが同じではありませんか? 'SELECT CompanyID FROM(SELECT ...'対 'SELECT CompanyID FROM dbo.CompaniesどこCompanyID IN(SELECT ...'? – sh1rts

答えて

1

あなたは終わり

cmd.CommandText = "SELECT CompanyID FROM dbo.Companies WHERE CompanyID IN (SELECT CompanyID FROM (SELECT CompanyID, OrderedDateTime, Rank() over (partition by CompanyID order by OrderID DESC) RankOrder FROM dbo.Orders OD1) TBL WHERE RankOrder = 1 AND OrderedDateTime <= DATEADD(mm,-3,getDate()))"; 

または私はあなたが「余分な」文は「MS SQL」であなたの「SQL」と比較してい言うべきで)を欠場していますか?

SELECT CompanyID FROM dbo.Companies WHERE CompanyID IN 
関連する問題