2017-12-25 1 views
0

Ich bin auf der Suche nach einer Abfrage, um eine Spalte in Verkaufstabelle mit dem Namen MRP zurückgeben. Diese Tabelle weist einige falsche MRP-Werte auf. wo wie in Purchase Tabelle ist alles in Ordnung und hat Recht vales von MRP. Benötigte eine Abfrage, um die Werte in der Verkaufstabelle zurückzugeben, die in der Kauftabelle für einzelne Artikel keine übereinstimmende Bedarfsplanung hat.Benötigen Sie eine Abfrage zum Aussortieren der Werte aus One-Tabelle basierend auf den Werten eines anderen

Probe Kauf Tabelle

Iid CP  QUANTITY MRP PRICE 
    1 62.8 240 89 78 
    1 57.5 240 89 79 
    1 60.15 480 89 79 
    2 60.14 720 89 79 
    2 60.15 480 89 79 

Beispielverkauf Tabelle hier 2. Reihe hat die Mistaken MRP

iid CP QTY MRP PRICE 
    1 57.5 240 89 77 
    1 57.5 40 81 79 
    1 57.5 40 89 79 
    1 62.8 40 89 72 
    1 62.8 40 89 78 

eine Abfrage benötigte die ID in Verkauf Tabelle zu zeigen, wo die ItemID iid und MRP fälschlicherweise genommen werden wenn nicht in der Liste der Einkäufe für den gleichen Artikel

Vielen Dank im Voraus.

Antwort

0

Sie können eine NOT IN-Klausel verwenden, um nach Werten zu suchen, die nicht vorhanden sind. In Ihrem Fall beziehen nur die „NOT IN“ Werte aus dem Kauf Tabelle:

SELECT MRP 
FROM SalesTable 
WHERE Iid NOT IN (SELECT IId FROM PurchaseTable) 

Dies wird das MRP-Feld für alle Zeilen in Ihrem Verkaufstisch mit „Iid“ Werte zurückgeben, die nicht über eine passende haben „Iid "Wert in der PurchaseTable. Abhängig von Ihrer DB-Version müssen Sie möglicherweise WHERE Iid IS NOT NULL zu Ihrer Unterauswahl hinzufügen, um mit NOT IN zu arbeiten.

Sie sollten auch den Operator NOT EXISTS verwenden können, um das Gleiche zu tun.

+0

Es Nichts zurückkehren, Sorry –

+0

Bitte senden Sie die genaue Abfrage Sie lief. – ravioli

0
SELECT id, itemn, CAST(MRP AS NUMERIC(18,0)) as mrp, price 
FROM [iBillDB].[dbo].DETAILSALE 
WHERE CAST(MRP AS NUMERIC(18,0)) NOT IN (SELECT CAST(MRP AS NUMERIC(18,0)) FROM [iBillDB].[dbo].DETAILPURCHASES) order by id, CAST(itemn AS NUMERIC(18,0)) asc 

Dies funktioniert für mich. Danke für den Hinweis @ravioli

0

Mit not exists()

select * 
from sale s 
where not exists (
    select 1 
    from purchase p 
    where p.iid = s.iid 
    and p.mrp = s.mrp 
) 

rextester Demo: http://rextester.com/ZICIT13088

kehrt:

+-----+----+-----+-----+-------+ 
| iid | cp | qty | mrp | price | 
+-----+----+-----+-----+-------+ 
| 1 | 58 | 40 | 81 | 79 | 
+-----+----+-----+-----+-------+ 
Verwandte Themen