Ich habe eine Abfrage, die eine Liste der Dienste und ContractorIDs zurückgibt. Ich muss diese Dienste in ein Feld stopfen, um sie mit einer anderen Select-Anweisung von ContractorID zu verbinden, aber ich kann nicht herausfinden, wie es geht.SQL Stuff von Unterabfrage
Die Select, die die Dienste aufgeführt ist "
SELECT DISTINCT SM.ContractorID,
CASE WHEN S.bitRestrictedSelection = 1
THEN S.vchDescription + '*'
ELSE S.vchDescription
END AS vchDescription
FROM tblAscServiceRegionToOperator SRTO
INNER JOIN tblServiceMatrix SM
ON SRTO.OperatorID = 12624
AND SM.ServiceRegionID = SRTO.ServiceRegionID
AND SM.bitPrimaryService = 1
INNER JOIN tblServices S
ON S.ServiceID = SM.ServiceID
Dies ergibt folgendes:
Im Beispiel für Auftragnehmer # 16 Er hat vier Dienste, die ich brauche sie zu setzen in einem Feld namens Dienste durch den Beitritt mit einer anderen Select-Anweisung Ich habe Folgendes versucht, aber ich bekomme Fehler:
Select DISTINCT CompanyID, vchCompanyName as CompanyName,vchFIDNumber,vchPrimContactName, vchPrimContactEmail
,stuff((','
SELECT DISTINCT
SM.ContractorID,
CASE WHEN S.bitRestrictedSelection = 1
THEN S.vchDescription + '*'
ELSE S.vchDescription
END AS vchDescription
FROM tblAscServiceRegionToOperator SRTO
INNER JOIN tblServiceMatrix SM
ON SRTO.OperatorID = 12624
AND SM.ServiceRegionID = SRTO.ServiceRegionID
AND SM.bitPrimaryService = 1
INNER JOIN tblServices S
ON S.ServiceID = SM.ServiceID
FOR XML PATH('')
), 1, 1, '') as Services from tblCompany
Jede Hilfe wird sehr geschätzt !!!
Suchen Sie nach "Common Table Expressions" (CTEs), da Sie eine Unterabfrage so kapseln können, dass sie nur wie eine Tabelle aussieht und wirklich helfen kann, Ihren SQL-Code zu vereinfachen. Es erleichtert das Zusammenfügen. Ein Problem in einzelne CTEs zu zerlegen und sie dann wieder zusammenzufügen, um die gewünschte Abfrage aufzubauen, kann ein sehr nützlicher Ansatz sein. – pmbAustin
Welche Fehler haben Sie? –