最近、誤った結果を出すまで何年も問題なくPeopleSoftレポートを実行しています。問題を修正するために、WHERE句のパラメータをグループ化する必要がありました。以下のスクリーンショットをご覧ください。 Query Window ScreenshotTSQLの結果エラー
クエリでは、パラメータを指定してもデータを取得できません。一番上のクエリは変更されたもので、一番下のものはレポートが何のエラーもなく5年間にわたって実行されたものです。今はビジネスの利害関係者にそのような振る舞いがある理由を説明する必要があります。何かご意見は?
-- THIS QUERY EXECUTES FINE AND DISPLAYS EXPECTED RESULT (TOP PANE)
SELECT PRODUCT, HM_RETIRE_FLAG, RETIREMENT_DT
FROM FSPROD..PS_HM_PRODUCT_AM
WHERE PRODUCT = '7U3'
AND (HM_RETIRE_FLAG = 'Y' OR (HM_RETIRE_FLAG = 'Y' AND RETIREMENT_DT > getdate()))
-- THIS QUERY DISPLAYS A COMPLETELY DIFFERENT RESULT (BOTTOM PANE)
SELECT PRODUCT, HM_RETIRE_FLAG, RETIREMENT_DT
FROM FSPROD..PS_HM_PRODUCT_AM
WHERE PRODUCT = '7U3'
AND HM_RETIRE_FLAG = 'Y' OR (HM_RETIRE_FLAG = 'Y' AND RETIREMENT_DT > getdate())
でそれを指摘するために努力をしていた代わりに、スクリーンショットのテキストとしてクエリを投稿した場合。 –
[precedence opertors](https://msdn.microsoft.com/en-us/library/ms190276.aspx)についての両方のSQLクエリは同じ条件ではありません。 – danihp
最初のものはとにかく悪いです。 'x = yまたは(x = yおよびz = 1)'は 'x = y'の場合と同じになるため、 – LukStorms