2017-12-15 20 views
0

지금 당장 볼 수없는 매우 간단한 해결책이 있습니다.SQL 쿼리 : 활동 수를 포함한 고객 이름

SQL 보고서 용 스크립트가 필요합니다. 나는 간단한의 모든 고객 이름을 선택 얻을 수 있습니다 :이 고객의 이름을 선택, 드롭 다운 메뉴 나에게 정렬 된 목록을 제공

SELECT 
    t5.[Name] AS CustomerName 
FROM 
    [T5] t5 
WHERE 
    t5.Type IN (1, 2) 
ORDER BY 
    t5.[Name] 

. 결과 집합은 다음과 같습니다 :

CustomerName 
------------ 
Customer 1 Name 
Customer 2 Name 
Customer 3 Name 
... 

하지만 난 그냥 나뿐만 아니라 이름 문자열 내에서 해당 고객의 이름으로 관련 활동의 번호가 필요합니다, 이름이 필요하지 않습니다. "여기 (38) 고객 이름"

나에게 하나 특정 고객에 대한 정확한 수를 제공 문 (이 예에서는, "고객 5 명") 예를 들어, 해당 고객에 대한 38 개 활동이 같아야합니다

SELECT 
    COUNT(*) 
FROM 
    [T1] t1 
INNER JOIN 
    [T2] t2 ON t2.[ID] = t1.[Activity] 
INNER JOIN 
    [T3] t3 ON t3.[ID] = t2.[Username] 
INNER JOIN 
    [T4] t4 ON t4.[ID] = t3.[ID] 
INNER JOIN 
    [T5] t5 ON t5.[ID] = t4.[X] 
WHERE 
    t5.[Name] = 'Customer 5 Name' 

를 이제 분명히 나는 ​​다음과 같은 결과 집합을 얻기 위해, 어떻게 든이 결합해야합니다 :

CustomerName 
------------------- 
(a) Customer 1 Name 
(b) Customer 2 Name 
(c) Customer 3 Name 
(d) Customer 4 Name 
(e) Customer 5 Name 
(f) Customer 6 Name 
... 

(AF가 각각 인을 거기에 도착하는 조인의이 같은, 그것은 몇 가지를 필요로 보이는 활동 상담 해당 고객의 경우 t)

도움 주셔서 감사합니다!

+0

검색어에 'GROUP BY'가 필요합니다. – zambonee

답변

0
WITH pre AS 
    (
    SELECT t5.[Name] AS CustomerName, COUNT(*) AS ActivityCount 
    FROM [T1] t1 
    INNER JOIN [T2] t2 ON t2.[ID] = t1.[Activity] 
    INNER JOIN [T3] t3 ON t3.[ID] = t2.[Username] 
    INNER JOIN [T4] t4 ON t4.[ID] = t3.[ID] 
    INNER JOIN [T5] t5 ON t5.[ID] = t4.[X] 
    WHERE t5.Type IN (1, 2) AND t5.[Name] = 'Customer 5 Name' 
    GROUP BY t5.Name 
    ) 

    SELECT '(' + ActivityCount + ') ' + CustomerName 
    FROM pre 
0

내가이 당신에게 당신의 요구 사항에 따라 고객 이름과 수를 줄 것이다 생각 group by

SELECT 
    t5.[Name], COUNT(*) 
FROM 
    [T1] t1 
INNER JOIN 
    [T2] t2 ON t2.[ID] = t1.[Activity] 
INNER JOIN 
    [T3] t3 ON t3.[ID] = t2.[Username] 
INNER JOIN 
    [T4] t4 ON t4.[ID] = t3.[ID] 
INNER JOIN 
    [T5] t5 ON t5.[ID] = t4.[X] 
group by t5.[Name] 
0

사용해야합니다.

SELECT 
     '(' + CAST(COUNT(*) AS nvarchar(4)) + ') ' + t5.[Name] as [CustomerName] 
     FROM 
      [T1] t1 
     INNER JOIN 
      [T2] t2 ON t2.[ID] = t1.[Activity] 
     INNER JOIN 
      [T3] t3 ON t3.[ID] = t2.[Username] 
     INNER JOIN 
      [T4] t4 ON t4.[ID] = t3.[ID] 
     INNER JOIN 
      [T5] t5 ON t5.[ID] = t4.[X] 
     group by t5.[Name]