2016-07-19 9 views
1

Ich habe diese Aufgabe CodeName wie in Beispiel anzuzeigen, und es könnte mehrere Code getrennt durch Kommas, ich habe versucht, XML-Parse verwenden, aber sieht so aus ein bisschen andere Situation. Im Beispielcode unten habe ich es in einfacher Weise gemacht, aber vielleicht gibt es einen besseren Weg, der flexibler ist: Ich schließe auch die gewünschte Ausgabe in das Foto ein. Sample of desired output click hereTSQL, wie horizontal innerhalb des Joins zu verketten,

WITH cte1 AS (
SELECT 'Alpha' Name, 'AA' Code UNION 
SELECT 'Bravo' Name, 'AA,BB,CC' Code UNION 
SELECT 'Whiskey' Name, NULL Code), 
cteLookup AS (
SELECT 'AA' CodeID, 'Avia' CodeName UNION 
SELECT 'BB' CodeID, 'Bahamas' CodeName UNION 
SELECT 'CC' CodeID, 'Chile' CodeName ) 


SELECT Name, 
     Code, 
     SUBSTRING(Code,1,2) c1, 
     x1.CodeName + ', ' + ISNULL(x2.CodeName,'') + ', ' + ISNULL(x3.CodeName,'') 
FROM Cte1 
LEFT JOIN cteLookup x1 ON x1.CodeID = SUBSTRING(Code,1,2) 
LEFT JOIN cteLookup x2 ON x2.CodeID = SUBSTRING(Code,4,2) 
LEFT JOIN cteLookup x3 ON x3.CodeID = SUBSTRING(Code,7,2) 
+0

Könnten Sie als Text hinzufügen statt Foto Bilder werden in einigen Bereichen – TheGameiswar

+0

Ich habe keine Ahnung blockiert werden, warum Sie dieses Bild http hinzugefügt: // i .stack.imgur.com/H1k2W.jpg also habe es zurückgerollt. –

Antwort

2
WITH cte1 AS (
SELECT 'Alpha' Name, 'AA' Code UNION 
SELECT 'Bravo' Name, 'AA,BB,CC' Code UNION 
SELECT 'Whiskey' Name, NULL Code), 
cteLookup AS (
SELECT 'AA' CodeID, 'Avia' CodeName UNION 
SELECT 'BB' CodeID, 'Bahamas' CodeName UNION 
SELECT 'CC' CodeID, 'Chile' CodeName ) 

-- 

SELECT 
    A.Name, 
    A.Code, 
    LEFT(A.CodeName, LEN(A.CodeName) - 1) AS CodeName 
FROM 
(
    SELECT 
     C.Name, 
     C.Code, 
     (  
      SELECT 
       CL.CodeName + ', ' 
      FROM     
       cteLookup CL 
      WHERE 
       C.Code LIKE '%' + CL.CodeID + '%' 
      FOR XML PATH ('') 
     ) AS CodeName 

    FROM 
     Cte1 C 
) A 

Ausgabe

Name Code  CodeName 
------- -------- ------------------------- 
Alpha AA  Avia 
Bravo AA,BB,CC Avia, Bahamas, Chile 
Whiskey NULL  NULL 
+0

Tx Hebele, das funktioniert perfekt, –

+0

Gern geschehen – NEER

Verwandte Themen