MS AccessアプリケーションをSQLサーバーのバックエンドに書き直しています。私は、アクセスがMAX()
を使用している方法でSQL Serverがそれをやっている方法でいくつかの異常な動作に苦しんでいます。たぶん睡眠不足かもしれませんが、私は何時間もこれを見つめており、なぜSQLサーバーの結果が異なるのか分かりません。Max()MS AccessとSQLサーバーの動作が異なります
サンプルデータ:
Acct ByUser TranType TranID AddID ClearTime TranTime
12345678 CZ12 W 55545124 CZ36 12/12/2011 9:45:31 AM 12/12/2011 9:45:31 AM
12345678 CZ24 W 55545124 CZ36 12/12/2011 10:01:26 AM 12/12/2011 10:01:26 AM
12345678 CZ36 W 55545124 CZ36 12/12/2011 9:45:31 AM 12/12/2011 9:45:31 AM
12345678 MG12 W 55545124 CZ36 12/12/2011 10:48:43 AM 12/12/2011 10:48:43 AM
12345678 CZ25 W 55545124 CZ36 12/12/2011 9:45:31 AM 12/12/2011 9:45:31 AM
MS Accessクエリ:Accessで
SELECT Acct, TypeID, TranType
, Max(TranTime) AS MaxOfTranTime
, AddID
, Max(ClearTime) AS MaxOfClearTime
FROM Cleared
WHERE
(
((ByUser) Like "CZ*" Or (ByUser) Like "TR*" Or
(ByUser) Like "RR*" Or (ByUser) Like "MG*" Or
(ByUser) Like "RN*" Or (ByUser) Like "PS*" Or
(ByUser) Like "OP*" Or (ByUser) Like "JA*" Or
(ByUser) Like "IC*" Or (ByUser) Like "IB*" Or
(ByUser) Like "FO*" Or (ByUser) Like "DV*" Or
(ByUser) Like "CD*" Or (ByUser) Like "BO*" Or
(ByUser) Like "2D*")
)
GROUP BY Acct, TypeID, TranType, AddID
結果:
Account TranID TranType MaxOfTranTime AddID MaxOfClearTime
12345678 55545124 W 12/12/2011 10:48:43 AM CZ36 12/12/2011 9:45:31 AM
SQLサーバーでの問合せは、私のByUsersが保存されていることで若干異なっていますトン数のクエリでタイピングを最小限に抑えるためにテーブルに格納します。
SELECT C.Acct
, C.RequestId
, C.TypeCode
, Max(C.TranTime) as MaxTranTime
, C.AddUserId
, Max(C.ClearDate) As MaxClearDate
FROM Cleared C
WHERE EXISTS (SELECT *
FROM UserIdFilter U
WHERE ByUserId LIKE U.UserId)
GROUP BY Acct, RequestId, TypeCode, AddUserId
SQL Serverの結果は以下のとおりです。私はこれを通過するとき
Account TranID TranType MaxOfTranTime AddID MaxOfClearTime
12345678 55545124 W 12/12/2011 10:48:43 AM CZ36 12/12/2011 10:48:43 AM
SQLサーバは2011年12月12日10時48分43秒AMのMaxOfClearTimeを得ることに正確であるように思わしかし私は何かを逃していますか?アクセス処理はMAX()
と異なっていますか?私はこれで私の心を失っているように感じるので、これに関する他の目は素晴らしいでしょう。
第1回で 'Max(ClearTime)AS MaxOfClearTime'を使用し、2番目に 'Max(C.ClearDate)As MaxReasClearDate'を使用します。 – ysrb
@ysrbそれらは同じです。 、サイトに投稿する前にデータをスクラブする必要があります。私は訂正しました – Taryn
"SELECT * FROM UserIdFilter U WHERE ByUserId LIKE U.UserId"は、最初のクエリと同じ値を返しますか? –