>source

이 쿼리를 작성했습니다 :

SELECT ALL
    RTrim(ARTICO.CODICE) AS [Cod.Ricambio],
    RTrim(ARTICO.DESCR) AS Descrizione,
    RTrim(ARTCLA4.CODICE) AS [Modello Princ.],
    RTrim(ARTICO1.CODICE) AS [Cod.Compatib.]
FROM
    ARTICO
LEFT JOIN 
    ARTSOS ON ARTSOS.IDARTICO = ARTICO.ID
LEFT JOIN 
    ARTICO ARTICO1 ON ARTSOS.IDARTSOS = ARTICO1.ID
LEFT JOIN 
    ARTCLA4 ON ARTCLA4.ID = ARTICO.IDARTCLA4
WHERE
    ARTICO.IDLINEEP = 4

ARTICO.CODICE   articla4.codice 경우에도 중복을 가질 수 있습니다  항상 같습니다 ( artico.codice 와 관련됨) ), artico1.codice  여러 값을 가질 수 있습니다.

I.E. 그렇게 될 수있다

artico.codiceABC        articla4.codice001       artico1.codice001
artico.codiceABC        articla4.codice001       artico1.codice002
artico.codiceABC        articla4.codice001       artico1.codice003

내가 얻고 싶은 결과는 다음과 같습니다 :

artico.codiceABC    articla4.codice001    artico.codice001,artico.codice002,artico.codice003

  • 답변 # 1

    SQL Server 2017 이상을 사용하지 않으므로 표준 접근 방식을 사용하여 그룹 연결을 시뮬레이션 할 수 있습니다.

    SELECT
        RTRIM(ARTICO.CODICE) AS [Cod.Ricambio],
        RTRIM(ARTICO.DESCR) AS Descrizione,
        RTRIM(ARTCLA4.CODICE) AS [Modello Princ.],
        [Cod.Compatib.] = STUFF((
            SELECT ',' + ARTICO1.CODICE
            FROM ARTICO ARTICO1
            WHERE ARTSOS.IDARTSOS = ARTICO1.ID
            FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
    FROM ARTICO
    LEFT JOIN ARTSOS
         ON ARTSOS.IDARTICO = ARTICO.ID
    LEFT JOIN ARTCLA4
        ON ARTCLA4.ID = ARTICO.IDARTCLA4
    WHERE
        ARTICO.IDLINEEP = 4;
    
    

  • 답변 # 2

    내 친구가 한 가지 해결책을 말해 주었지만 괜찮지 만 불행히도 마지막 문자로 쉼표를 남겼습니다. 이걸 제거해도 되나요?

    SELECT DISTINCT 
        RTrim(ARTICO.CODICE) AS [Cod.Ricambio],
        RTrim(ARTICO.DESCR) AS Descrizione,
        RTrim(ARTCLA4.CODICE) AS [Modello Princ.],
        (
    SELECT  RTrim(ARTICO1.CODICE) + ','  AS 'data()' 
    FROM
        ARTICO A
    LEFT JOIN 
        ARTSOS ON ARTSOS.IDARTICO = ARTICO.ID
    LEFT JOIN 
        ARTICO ARTICO1 ON ARTSOS.IDARTSOS = ARTICO1.ID
    LEFT JOIN 
        ARTCLA4 ON ARTCLA4.ID = ARTICO.IDARTCLA4
    WHERE
        ARTICO.IDLINEEP = 4 AND A.CODICE = ARTICO.CODICE 
     FOR XML PATH('') 
    ) AS [Cod.Compatib.]
    FROM
        ARTICO
    LEFT JOIN 
        ARTSOS ON ARTSOS.IDARTICO = ARTICO.ID
    LEFT JOIN 
        ARTICO ARTICO1 ON ARTSOS.IDARTSOS = ARTICO1.ID
    LEFT JOIN 
        ARTCLA4 ON ARTCLA4.ID = ARTICO.IDARTCLA4
    WHERE
        ARTICO.IDLINEEP = 4
    
    

관련 자료

  • 이전 css - Flex 요소에 가로 스크롤 막대가 나타남
  • 다음 python 3.x - 정의되지 않은 기호 - tensorflow를 가져올 때 _pythreadstate_current