2017-03-18 2 views
1

ich auf einer Abfrage arbeite, die auf JOIN Verbände basierend 2 Spalten aus verschiedenen Tabellen bekommt:JOIN Zeichenfolge in Spalte Zellen ändern

SELECT DISTINCT co.item_name 
    ,SUBSTRING((
      SELECT ',' + ca.attr_val AS [text()] 
      FROM [CONTRACT_ATTR] CA 
      WHERE CA.Item_Id = CO.Item_Id 
       AND ca.field_id = 239 
      ORDER BY co.item_name 
      FOR XML PATH('') 
      ), 2, 1000) GM_PROG 
FROM [dbo].[CONTRACT] CO; 

enter image description here

Die zweite Spalte hat Zahlen und die Zahlen sind der Schlüssel in einer Nachschlagetabelle.

enter image description here

Ich versuche, herauszufinden, wie die Zahlen in die richtige item_name zu ändern.

Ich glaube, es hat mit der Abfrage in der Teilkette zu tun:

 SELECT ','+ca.attr_val AS [text()] 
     FROM [CONTRACT_ATTR] ca 
     JOIN GM_PROGRAM gm 
     ON ta.GM_PROG = gm.item_id 
     WHERE CA.Item_Id = CO.Item_Id 
      AND ca.field_id = 239 
     ORDER BY co.item_name 
     FOR XML PATH ('') ta 
    ), 2, 1000) GM_PROG 

Dies ist, wo ich bin. Ich laufe nicht und ich denke, das ist, weil es versucht zu verweisen.

Was mache ich falsch und wie repariere ich es?

Antwort

1

Sie in der Nähe, man muss nur ca.attr_val-gm.item_name ändern, Ihre beitreten verwiesen ta statt ca (Tippfehler Ich denke, würde), und wahrscheinlich Art auf gm.item_name statt co.item_name in der Unterabfrage:

SELECT DISTINCT co.item_name 
    ,SUBSTRING((
      SELECT ',' + gm.item_name AS [text()] 
      FROM [CONTRACT_ATTR] CA 
      inner join GM_PROGRAM gm 
       ON ca.attr_val = gm.item_id 
      WHERE CA.Item_Id = CO.Item_Id 
       AND ca.field_id = 239 
      ORDER BY gm.item_name 
      FOR XML PATH('') 
      ), 2, 1000) GM_PROG 
FROM [dbo].[CONTRACT] CO; 
+0

I Ich bekomme das. Ungültiger Spaltenname 'GM_PROG'. Msg 4104, Ebene 16, Status 1, Zeile 18 Die mehrteilige Kennung "ga.item_name" konnte nicht gebunden werden. Msg 4104, Ebene 16, Status 1, Zeile 24 Die mehrteilige Kennung "ga.item_name" konnte nicht gebunden werden. –

+0

@DavidTunnell Mein schlechtes, das hätte 'gm' statt' ga' sein sollen. Ich habe den Alias ​​falsch gelesen. - aktualisierte meine Antwort, um es zu korrigieren – SqlZim

+0

Kein Problem. Ich schätze die Hilfe sehr. Mit dem Update sieht es jetzt nur noch das 1. Problem aus: Ungültiger Spaltenname 'GM_PROG'. Vielleicht, weil es erstellt wurde und keine "echte" Spalte ist? –

Verwandte Themen