0

このクエリでは、価格が31 、 41 、 125 、 201の地域で価格が同じである値 (主に r.dpq) を取得しようとしています。価格は922で、他のすべての地域では価格は 216 です。

クエリは実際に、地域 31 、 41 、 125 、 201 で価格が 216 の製品を取得しますが、他の地域ではそうではありません。エラーはここにあると思いますが、それを修正する方法がわかりません

rte.TerritoryId not in (31,41,201,125) and rte.PriceCodeId=216 and rte.PartnerTerritoryId is null

ここに完全なクエリがあります

select r.dpq, r.OwningTerritoryId , r.id from Release r
inner join ReleaseTerritory rt on rt.ReleaseId=r.Id
inner join ReleaseTerritoryPrice rtp on rtp.ReleaseId=r.Id
where exists (
select * from ReleaseTerritoryPrice rtp31, ReleaseTerritoryPrice rtp201,ReleaseTerritoryPrice rtp41,ReleaseTerritoryPrice rtp125,
ReleaseTerritory rt69 , ReleaseTerritoryPrice rte
where 
rtp31.ReleaseId=r.Id and rtp201.ReleaseId=r.Id and rtp41.ReleaseId=r.Id and rtp125.ReleaseId=r.Id and rt69.ReleaseId=r.Id and 
rte.ReleaseId=r.Id and 
rtp31.TerritoryId=31 and rtp201.TerritoryId=201 and rtp41.TerritoryId=41 and rtp125.TerritoryId=125 and 
rtp31.PriceCodeId=rtp201.PriceCodeId and rtp201.PriceCodeId=rtp41.PriceCodeId and rtp41.PriceCodeId=rtp125.PriceCodeId and 
rt69.TerritoryId=69 and 
rtp31.PriceCodeId=922 and 
rt69.IsLocked=0 and 
rte.TerritoryId not in (31,41,201,125) and rte.PriceCodeId=216 and rte.PartnerTerritoryId is null
) and r.OwningTerritoryId in (201,200)
group by r.dpq , r.OwningTerritoryId , r.Id
order by r.OwningTerritoryId

助けてくれてありがとう

4

2 に答える 2

1

where句の最後の部分を次のように変更します。

AND (
       (rte.TerritoryId IN (31,41,201,125) AND rte.PriceCodeId = 922)     
        OR
       (rte.TerritoryId NOT IN (31,41,201,125) AND rte.PriceCodeId = 216)
    )

ステートメントの最初と最後に追加された角かっこに注意ANDしてください。これらは、完全なクエリで残りのステートメントを無効にするのではなく、OR をこのステートメントにのみローカライズするために重要です。

結果をこれら 4 つの領域のみに制限しているため、WHERE 句からこのステートメントを削除する必要もあります。

rtp31.TerritoryId=31 and rtp201.TerritoryId=201 
and rtp41.TerritoryId=41 and rtp125.TerritoryId=125 
于 2013-06-06T11:19:00.547 に答える
1

あなたが言及したフィルターはあなたの要件ではないと思います。のようかもしれません

(rte.TerritoryId not in (31,41,201,125) and rte.PriceCodeId=216) or
(rte.TerritoryId not (31,41,201,125) and rte.PriceCodeId=922)
于 2013-06-06T11:19:07.140 に答える