2016-05-20 6 views
-2

Ich habe den folgenden Code, wo wir unsere Bestände über 17 verschiedenen Standorten sehen müssen. Der Code, den ich unten habe, ist nur für 5 Standorte, funktioniert aber. Wir suchen nach einem saubereren, effizienteren Code, mit dem wir die gleichen Ergebnisse erzielen können.Effizientere Code

SELECT DISTINCT imitmidx_sql.item_no, imitmidx_sql.item_desc_1, imitmidx_sql.item_desc_2, 
(SELECT qty_on_hand FROM iminvloc_sql AS IMINVLOC_SQL_1 WHERE (loc = '1') AND (item_no = imitmidx_sql.item_no)) AS Loc1, 
(SELECT qty_on_hand FROM iminvloc_sql AS IMINVLOC_SQL_2 WHERE (loc = '2') AND (item_no = imitmidx_sql.item_no)) AS Loc2, 
(SELECT qty_on_hand FROM iminvloc_sql AS IMINVLOC_SQL_3 WHERE (loc = '3') AND (item_no = imitmidx_sql.item_no)) AS Loc3, 
(SELECT qty_on_hand FROM iminvloc_sql AS IMINVLOC_SQL_4 WHERE (loc = '4') AND (item_no = imitmidx_sql.item_no)) AS Loc4, 
(SELECT qty_on_hand FROM iminvloc_sql AS IMINVLOC_SQL_5 WHERE (loc = '5') AND (item_no = imitmidx_sql.item_no)) AS Loc5 
FROM iminvloc_sql INNER JOIN imitmidx_sql ON iminvloc_sql.item_no = imitmidx_sql.item_no 
+0

Warum Aliasing Sie Ihre Tabellennamen in Ihrem LOCN die, wenn Sie nicht einmal den Alias? – Dresden

Antwort

0

Wie wäre:

select 
    imitmidx_sql.item_no, 
    imitmidx_sql.item_desc_1, 
    imitmidx_sql.item_desc_2, 
    itm_loc_qty.* 

    from iminvloc_sql 

pivot (SUM(qty_on_hand) for loc in ([1],[2],[3],[4],[5])) as itm_loc_qty -- Add here as necessary 

join imitmidx_sql 
on itm_loc_qty.item_no = imitmidx_sql.item_no 
+0

Der Code des Ops dreht sich im Wesentlichen um die Ergebnisse. Wo es 5 verwandte *** Zeilen *** in "iminvloc_sql" gibt, ergeben die korrelierten Unterabfragen diese als 5 *** Felder ***. Ihre Abfrage behält die 5 Zeilen bei, ohne den Drehpunkt ausgeführt zu haben. – MatBailie

Verwandte Themen