MSSQL dubbele items filteren

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil een prijslijst maken uit een mssql 2005 db voor klanten

Nu heb ik het probleem dat klanten in een groep zitten met een bepaalde korting. en dat ze ook extra korting kunnen krijgen.

Ik gebruik 3 tabellen

Producten -> staan de omschrijving en artikel nummer in
Price --> de aktueele prijs
Discount --> hier staan de kortingen in voor de klanten en voor de groep waar de klant in zit

er bestaan namelijk 2 velden voor de kortingen welke in de

Disc --> hier staat een korting alleen voor de klant in dan is het veld DiscG 0
DiscG --> hier staat de korting voor de groep vd klant in dan is het veld Disc 0

Als ik een query draai

dan krijg ik deze waardes terug
code:
1
2
3
4
5
6
7
productID   Artnr                omschrijving                    Korting
3             10150                     Artikel 1                          25.00
3             10150                     Artikel 1                          28.00
4             10155                     Artikel 2                          28.00
4             10155                     Artikel 2                          25.00
5             80100                     Artikel 3                          25.00
6             80150                     Artikel 4                          25.00


Product Id 3 heeft 2 kortingen voor de klant en voor de groep.
Ik moet dus de korting van 28% hebben en die van 25% er uit filteren.

PriceTo moet null zijn anders is de prijs verlopen ( Prijs History)
ContID is het id van de klant waar de lijst voor is

code:
1
2
3
4
5
6
7
8
9
10
11
SELECT P.[PK_PRODID]                   
      ,P.[PRODID] as Artikelnummer
      ,P.[DESC] as Omschrijving
      ,P.[QUANTITY] as Aantal
      ,Pr.[PRICE] as Bruto
     ,D.DISC as Korting
     ,(Pr.[PRICE] *(100-D.DISC)/100) as Netto
    FROM [dbo].[Producten] as P join PriceList as Pr ON Pr.FK_PRODUCT = P.[PK_PRODID] 
    join Discount as D on D.FK_PRODUCT = Pr.FK_PRODUCT 
    where PR.PRICE_TO is NULL and D.CONTID='1228' or (PR.PRICE_TO is NULL and D.DiscG>0 and D.CONTID =0)
    order by Pr.FK_PRODUCT


Ik krijg het alleen niet voor elkaar om de laagste korting er uit te filteren. iemand een hint hoe dit aan te pakken?


idd moet gewoon de max pakken. zat te moeilijk te denken,. 8)7

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Kijk eens naar Aggregate functies als MIN() en MAX() en dan meteen ook naar Hoe werkt dat GROUP BY nu eigenlijk?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij