私には12の場所があり、それぞれが独自のデータベースを実行しています。各データベースはまったく同じように設定されており、独自の情報があります。データベースはすべてSQL2005または2008サーバーです。販売手数料を支払うための情報を取得するために、複数のテーブルクエリを作成しました。このクエリは12個のデータベースのうち10個で機能し、他の2個のデータベースは結果を返しません。2つの結合されたテーブル(2つのデータベースでは機能しません)を使用してクエリを実行すると、機能しますが、問題の他のテーブルは「where」ステートメントとは関係ありません。他のすべてのデータベースで機能する場合、2005年のサーバーデータベースの2つで機能しない理由を誰かが明らかにすることができますか?私のコードは次のとおりです。
SELECT Customers.sBarcode AS Barcode, Customers.dtCreated AS Created, CustomerUnlimitedTransactions.sCreatedBy AS [Commission pays],
Surcharges.sDescription AS [Unlimited Package], Surcharges.dblCommission AS [Commission Amount], Users.sUserName AS Greeter, @startdate AS Start_Date,
@enddate AS End_Date
FROM CustomerUnlimitedTransactions INNER JOIN
Customers ON CustomerUnlimitedTransactions.lCustomerId = Customers.lCustomerID INNER JOIN
VIPAccountTypes ON CustomerUnlimitedTransactions.lMonthlyAccountTypeId = VIPAccountTypes.lAccountType INNER JOIN
Surcharges ON VIPAccountTypes.lSurchargeId = Surcharges.Surcharge_ID INNER JOIN
Users ON Customers.lGreeterID = Users.ID_User
WHERE (Customers.dtCreated BETWEEN CONVERT(DATETIME, @startdate, 102) AND CONVERT(DATETIME, @enddate, 102)) AND
(CustomerUnlimitedTransactions.sTransactionType = N'sale') AND (CustomerUnlimitedTransactions.lMonthlyAccountTypeId = '11') OR
(Customers.dtCreated BETWEEN CONVERT(DATETIME, @startdate, 102) AND CONVERT(DATETIME, @enddate, 102)) AND
(CustomerUnlimitedTransactions.sTransactionType = N'sale') AND (CustomerUnlimitedTransactions.lMonthlyAccountTypeId = '12')
ORDER BY Created
このようにクエリを実行しても、結果は返されません。
SELECT Customers.sBarcode AS Barcode, Customers.dtCreated AS Created, CustomerUnlimitedTransactions.sCreatedBy AS [Commission pays],
Surcharges.sDescription AS [Unlimited Package], Surcharges.dblCommission AS [Commission Amount], Users.sUserName AS Greeter, @startdate AS Start_Date,
@enddate AS End_Date
FROM CustomerUnlimitedTransactions INNER JOIN
Customers ON CustomerUnlimitedTransactions.lCustomerId = Customers.lCustomerID INNER JOIN
VIPAccountTypes ON CustomerUnlimitedTransactions.lMonthlyAccountTypeId = VIPAccountTypes.lAccountType INNER JOIN
Surcharges ON VIPAccountTypes.lSurchargeId = Surcharges.Surcharge_ID INNER JOIN
Users ON Customers.lGreeterID = Users.ID_User
WHERE (Customers.dtCreated BETWEEN CONVERT(DATETIME, @startdate, 102) AND CONVERT(DATETIME, @enddate, 102))
ORDER BY Created
このようにクエリを実行すると、結果が得られます。
SELECT Customers.sBarcode AS Barcode, Customers.dtCreated AS Created, CustomerUnlimitedTransactions.sCreatedBy AS [Commission pays],
Surcharges.sDescription AS [Unlimited Package], Surcharges.dblCommission AS [Commission Amount], Users.sUserName AS Greeter, @startdate AS Start_Date,
@enddate AS End_Date
FROM CustomerUnlimitedTransactions INNER JOIN
Customers ON CustomerUnlimitedTransactions.lCustomerId = Customers.lCustomerID
WHERE (Customers.dtCreated BETWEEN CONVERT(DATETIME, @startdate, 102) AND CONVERT(DATETIME, @enddate, 102))
ORDER BY Created
上記のクエリのいずれにも関連付けられているNullはありません。繰り返しますが、これは12の10で機能します...そしてはい、データベースはまったく同じです。(このクエリを1年の日付範囲で実行すると、結果が得られます)ただし、先週だけで25の結果を表示する必要があり、2つのそれぞれに何も表示していません。