2017-09-05 2 views
1

Ich habe eine Datenbanktabelle (mit dem Namen: imitidx_sql), die eine Liste aller 50,000+ Teilenummern meines Unternehmens enthält. Die Spalte, die dies enthält, heißt "item_no". Ich möchte eine Ansicht der Tabelle erstellen, die Felder basierend auf der Artikelnummer zurückgibt. Zum Beispiel möchte ich, dass ein Feld in der Ansicht mit dem Titel "FloorAssembly" betitelt ist und das Feld die ungefähr 100 Artikelnummern wie "090-40 ___- " enthalten sollte. Im nächsten Feld in der Ansicht möchte ich alle meine zwei Leerstellennummern zurückgeben (sollte ungefähr 10 oder so sein), diese Zahlen sind wie '557-05186-'. Bisher kann ich erreichen dies entweder durch Verwendung von UnterabfragenKombinieren von Abfragen, die ungleiche Zeilen in einer Ansicht zurückgeben

SELECT DISTINCT FloorAssemblyNumber, TwoVoid, ThreeVoid 

FROM 

(SELECT DISTINCT item_no AS FloorAssemblyNumber 
FROM imitmidx_sql 
WHERE item_no LIKE '090-40___-__') 
AS FloorAssemblyNumber, 

(SELECT DISTINCT item_no AS TwoVoid 
FROM imitmidx_sql 
WHERE item_no LIKE '557-05186-__') 
AS TwoVoid, 

(SELECT DISTINCT item_no AS ThreeVoid 
FROM imitmidx_sql 
WHERE item_no LIKE '557-05128-__') 
AS ThreeVoid 

Oder ich kann das gleiche Ergebnis mit dem folgenden erreichen:

SELECT a.item_no AS FloorAssemblyNumber, b.item_no AS TwoVoid, c.item_no AS ThreeVoid5 

    FROM [002].[dbo].[imitmidx_sql]a , [002].[dbo].[imitmidx_sql]b, [002].[dbo].[imitmidx_sql]c 

    WHERE a.item_no LIKE '090-40___-__' AND b.item_no LIKE '557-05186-__' AND c.item_no LIKE '557-05128-__' 

jedoch beide dieser Fragen scheinen alle möglichen Kombinationen der einzelnen zurückzukehren Artikelnummern. Was ich möchte, ist, dass alle eindeutigen Positionsnummern ausgewählt sind und in ihrer jeweiligen Spalte (ohne irgendeine Beziehung zu den anderen) und wenn alle notwendigen Nummern ausgewählt sind, dann zeige einen Nullwert an.

Beispieldaten:

item_no 
090-30811-00 
090-30812-00 
090-40000-00 
090-40000-01 
090-40000-10 
090-40000-11 
090-40000-12 
090-40001-00 
557-05186-00 
557-05186-01 
557-05186-03 
557-05187-00 
557-05200-52 

Erwartetes Ergebnis:

FloorAssembly | TwoVoid  
090-40000-00 | 557-05186-00    
090-40000-01 | 557-05186-01    
090-40000-10 | 557-05186-03    
090-40000-11 |    
090-40000-12 |    
090-40001-00 | 

ich für die schlechte Formatierung entschuldigen, ich bin neu hier zu veröffentlichen. Vielen Dank für Ihre Zeit,

FS

+0

Fügen Sie Ihrer Anfrage bessere Verbindungsbedingungen hinzu – LONG

+0

Können Sie bitte einige Beispieldaten und das erwartete Ergebnis posten. –

+0

Riecht wie ein PIVOT – scsimon

Antwort

0

denke ich Case-Anweisung für Sie arbeiten kann. versuchen Sie das -

SELECT DISTINCT CASE WHEN item_no LIKE '090-40___-__' THEN item_no ELSE NULL END AS FloorAssemblyNumber, 
       CASE WHEN item_no LIKE '557-05186-__' THEN item_no ELSE NULL END AS TwoVoid, 
       CASE WHEN item_no LIKE '557-05128-__' THEN item_no ELSE NULL END AS ThreeVoid 
FROM imitmidx_sql 

Ich hoffe, dies hilft.

+0

Genau das habe ich gesucht. Vielen Dank – FFS88