distinctキーワードを使用しようとしましたが、列のグループ化を試みましたが、クエリで重複した結果が返されました。複数の結合後の重複結果
SELECT
distinct orderformdump.itemno,
case when PRH.ACTIVE = 1 and PRH.STARTDATE < cast(GETDATE() as DATE) and (PRH.ENDDATE IS NULL OR PRH.ENDDATE >= cast(GETDATE() as DATE)) then CAST(1 AS BIT) ELSE CAST(0 AS BIT) END as isindeal
FROM ORDERFORMDUMP
INNER JOIN ICITEM ON ICITEM.FMTITEMNO = orderformdump.itemno
LEFT JOIN PRD2 on ICITEM.ITEMNO = PRD2.ITEMNO
LEFT JOIN PRH on PRD2.CODE = PRH.CODE
order by Itemno
重複のいずれかに参加することにより、原因、LEFT JOIN PRD2 on ICITEM.ITEMNO = PRD2.ITEMNO
、または列case when PRH.ACTIVE = 1 and PRH.STARTDATE < cast(GETDATE() as DATE) and (PRH.ENDDATE IS NULL OR PRH.ENDDATE >= cast(GETDATE() as DATE)) then CAST(1 AS BIT) ELSE CAST(0 AS BIT) END as isindeal
です。結合を削除してサブクエリで同じ結果を得ることはできますが、サブクエリによってクエリが非常に遅く実行されます(たとえインデックスを作成しても)。
なぜ複数の結果があり、これを解決するために何ができますか?
どのようにこれを実行していますか?サブクエリではなく、テンポラリテーブルを使用してインデックスを作成する可能性はありますか? – Leonidas199x