2017-01-16 1 views
1

Hier ist meine eigentliche AbfrageHinzufügen um von XML wirft Fehler

SELECT 
    aces.ProductID,'<p>' + 
    Replace(STUFF((SELECT DISTINCT ', ' + CAST(A.year AS VARCHAR(4)) + ' ' + A.make + ' ' + A.model + ' ' + A.enginebase_new 
        FROM ACES_Data A 
        WHERE A.ProductID = aces.ProductID 
        FOR XML PATH('')), 1, 1, ''), ',', '<br>') 
      + '</p><p>' + i.[Subline Code] + '<br>' + i.[Subline Name] + '</p>' AS FullDescription 
FROM 
    ACES_Data aces 
LEFT OUTER JOIN 
    InventoryPricing i ON aces.part_number = i.PART 
WHERE 
    aces.ProductID IS NOT NULL 
    AND aces.MakeModelMappingID IS NOT NULL 
GROUP BY 
    aces.ProductID, i.[Part Description], i.[Subline Code], i.[Subline Name] 

Jetzt bestellen Hinzufügen von vor XML einen Fehler wirft.

Bitte sehen Sie unten aktualisiert Abfrage

SELECT 
    aces.ProductID,'<p>' + 
    Replace(
      STUFF 
       (
        (
         SELECT 
          distinct ', ' + Cast(A.year as varchar(4)) + ' ' + A.make +' ' + A.model + ' ' + A.enginebase_new 
         FROM 
          ACES_Data A 
         Where 
          A.ProductID=aces.ProductID 
         order by A.make,A.year asc 
         FOR XML PATH('') 
        ),1,1,'') 
        ,',', 
        '<br>' 
       ) 
    + '</p><p>' + i.[Subline Code] + '<br>'+ i.[Subline Name] + '</p>' As FullDescription 
from ACES_Data aces 
Left outer join InventoryPricing i 
on aces.part_number = i.PART 
where aces.ProductID is not null 
and aces.MakeModelMappingID is not null 
Group By aces.ProductID,i.[Part Description],i.[Subline Code],i.[Subline Name] 

auf

Einfügen
Where A.ProductID=aces.ProductID **order by A.make,A.year asc** FOR XML PATH('') 

es gibt mir Fehler als

ORDER BY-Elemente in der Auswahlliste angezeigt werden müssen, wenn SELECT DISTINCT angegeben .

+2

entfernen Sie sind nicht mit MySQL, Oracle, * und * SQL Server. Fügen Sie nur das Tag für das RDMS hinzu, das Sie tatsächlich verwenden. –

+0

Sie sollten auch Ihre Abfrage formatieren, da die meisten Benutzer hier nicht daran interessiert sind, eine lange Zeichenfolge wie diese zu lesen. –

+0

Ich formatierte ab sofort Ihre Abfrage, aber bitte formatieren Sie Ihre Abfrage in Zukunft immer auf dieser Plattform. –

Antwort

0

Da enginebase_new & model ist nicht Teil der Order by Sie nicht DISTINCT in Select verwenden können.

Verwenden Group by statt DISTINCT Duplikate

SELECT ', ' + Cast(A.year AS VARCHAR(4)) + ' ' + A.make 
     + ' ' + A.model + ' ' + A.enginebase_new 
FROM ACES_Data A 
WHERE A.ProductID = aces.ProductID 
GROUP BY A.year, 
      A.make, 
      A.model, 
      A.enginebase_new 
ORDER BY A.make, 
      A.year ASC 
FOR XML PATH('') 
+0

zeigt Fehler als Spalte 'ACES_Data.year' ist in der Auswahlliste ungültig, da es weder in einer Aggregatfunktion noch in der GROUP BY-Klausel enthalten ist. –

+0

zum Entfernen von + '' + Formular-Abfrage ist ein Problem als "Spalte 'ACES_Data.make' ist in der Auswahlliste ungültig, da es weder in einer Aggregatfunktion noch in der GROUP BY-Klausel enthalten ist." –

+0

Was ist mit dem zweiten Problem, dem ich gegenüberstehe? "Die Spalte 'ACES_Data.make' ist in der Auswahlliste ungültig, weil sie weder in einer Aggregatfunktion noch in der GROUP BY-Klausel enthalten ist." –