cancel
Showing results for 
Search instead for 
Did you mean: 

Query für niedrigsten Preis über alle Preislisten

Former Member
0 Kudos

Hallo Experten,

ich benötige einen Tip für meine beiden Query, die als Ergebnis aus der ITM1 den jeweils niedrigsten Preis anzeigen sollen.

Erster Query zeigt mir jedoch nur ItemCode und MinPreis an... ich sehe also nicht, aus welcher Preisliste

SELECT

T0.[ItemCode], 'MinPreis'= (SELECT MIN(T10.Price)

FROM ITM1 T10 WHERE T10.ItemCode=T0.ItemCode AND T10.Price > '0')

FROM ITM1 T0 GROUP BY T0.ItemCode

Nehme ich beispielsweise noch T0.PriceList hinein, so wird für jeden ItemCode die Preisliste gezeigt und ich muß mir von Hand (Excel) eine Gegenüberstellung bauen, wo ich den niedrigsten Preis,  ItemCode und Preisliste sehe.

Query 2 ist recht ausführlich aber halt zu umfangreich, und ohne Nacharbeit in Excel nicht nutzbar:

SELECT distinct

T0.[ItemCode], T3.ItemName, T0.[PriceList], T2.ListName , T0.[Price], 'MinPreis'= (SELECT MIN(T10.Price)

FROM ITM1 T10 WHERE T10.ItemCode=T0.ItemCode and T10.Price > '0')

FROM ITM1 T0

INNER JOIN OPLN T2 ON T0.PriceList = T2.ListNum

INNER JOIN OITM T3 ON T0.ItemCode = T3.ItemCode

Where T0.Price > '0'

Order by T0.ItemCode, T0.Price asc

Hat jemand einen Tip, wie ich in einer Sicht:

Itemcode, Preisliste, niedrigsten Preis

erhalte ?

Vielen Dank für Eure Wissenswerte.

Gruß

Markus

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi Markus versuchs mal hiermit:

SELECT A.ItemCode, min(A.Price), B.PL FROM

(SELECT T0.ItemCode 'ItemCode', T0.PriceList 'PriceList', T0.Price 'Price' FROM ITM1 T0) A

INNER JOIN

(SELECT T1.ListNum, T1.ListName 'PL' FROM OPLN T1) B

ON A.PriceList = B.ListNum

WHERE A.Price > 0

GROUP BY A.ItemCode, B.PL

Grüße Steffen

Former Member
0 Kudos

Hi Steffen,

Danke für Deinen Post und Deine Mühen.

Doch auch hier erscheinen im Ergebnis alle ItemCode doppelt und X-Fach, jenachdem in wievielen PL für diesen Artikel ein Preis hinterlegt wurde, der über 0 ist. Eine Ausgabe nur des MIN Preises erfolgt nicht.

Gruß

Markus

Former Member
0 Kudos

Versuchs mal hiermit:

SELECT T1.ItemCode, T1.Price, T3.ListName FROM

     ITM1 T1

    

INNER JOIN

    

     (SELECT ItemCode, Min(Price) AS Price FROM ITM1 AS U WHERE Price > 0 GROUP BY ItemCode) AS T2 ON  (T1.ItemCode = T2.ItemCode) AND (T1.Price = T2.Price)

INNER JOIN

    

     OPLN T3 ON T3.ListNum = T1.PriceList

Message was edited, reason: query lesbarer gemacht

Former Member
0 Kudos

Hi Steffen,

GENAU !!! Endgeil !

habe jetzt noch den ItemName reingebracht... so kann jeder meiner Kollegen was damit anfangen und die Preisgefüge prüfen:

SELECT T1.ItemCode, T4.Itemname, T1.Price, T3.ListName

FROM ITM1 T1

INNER JOIN (SELECT ItemCode, Min(Price) AS Price FROM ITM1 AS U WHERE Price > 0 GROUP BY ItemCode) AS T2

            ON  (T1.ItemCode = T2.ItemCode) AND (T1.Price = T2.Price)

INNER JOIN OPLN T3 ON T3.ListNum = T1.PriceList

INNER JOIN OITM T4 ON T1.ItemCode = T4.ItemCode

Order by T1.ItemCode

Vielen Dank für Deine Mühen und Zeit.

Gruß

Markus

Answers (1)

Answers (1)

former_member209066
Active Contributor
0 Kudos

Hi,

SELECT T1.[ItemCode], T1.[ItemName], T2.[ListName], T0.[Price] FROM ITM1 T0  INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode INNER JOIN OPLN T2 ON T0.PriceList = T2.ListNum WHERE T0.[Price] >'0'

Thanks,

Nithi

Former Member
0 Kudos

Hi Nithi,

thx for your message and Query proposal.

The result shows me all Prices from each ItemCode which has been filled in the pricelists.

I only need the smallest Price for each different ItemCode + Pricelist, where the Price is in.

Best regards

Markus

former_member209066
Active Contributor
0 Kudos

Hi,

SELECT T1.[ItemCode], T1.[ItemName], T2.[ListName], Min(T0.[Price])

FROM ITM1 T0  INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode

INNER JOIN OPLN T2 ON T0.PriceList = T2.ListNum WHERE T0.[Price] >'0'

Group By T1.[ItemCode], T1.[ItemName], T2.[ListName]

order by Min(T0.[Price])

Thanks,

Nithi