2016-10-16 3 views
-2

내가이 쿼리에 대한 당신의 도움이 필요 한 행의 행을 반복마이크로 소프트 SQL 쿼리 반환

원래의 결과를

ABBOTT DaleelMAMA Eman 55555555 NULL 56545412 Arabic 
ABBOTT DaleelMAMA Eman 55555555 NULL 22222222 Arabic 
ABBOTT DaleelMAMA Eman 55555555 NULL 25456552 Arabic 
ABBOTT DaleelMAMA Hala 55552504 22252128 NULL Arabic 

하지만, 이 결과를 반환하려면 내 쿼리를 업데이트해야하지만, 아래에 보이는 것처럼 U는 Eman 행이 3 번 반복되는 것을 볼 수 있습니다. 왜냐하면 해당 부모의 전화 번호가 다르기 때문에 한 행에이 결과를 만들어야하기 때문입니다. 어머니 번호 및 관련 부모 전화 번호를 포함하십시오.

필요한 결과

required result

사전에 귀하의 지원을 주셔서 감사합니다, 그것에 대해 찾고 목표로 필요한 결과에 대한 위의 링크를 참조하시기 바랍니다.

전체 솔루션보기

whole solution look

+0

사용자가 4 개 이상의 전화 번호를 가질 수 있는지 여부? –

답변

0

다음이

;with cte as 
(
SELECT   
    'ABBOTT' AS Customername, 
    'DaleelMAMA' AS AccountName, 
    ROW_NUMBER() over(partition by dbo.AccountBase.Name order by dbo.AccountBase.Telephone1) as rn, 
    dbo.AccountBase.Name AS FullName, 
    dbo.AccountBase.Telephone1 AS MobilePhone, 
    dbo.AccountBase.new_HomePhone1 AS HomePhone, 
    dbo.new_otherparentinformationBase.new_MobilePhone AS ParentPhone, 
    dbo.AccountBase.new_preferredlanguagetext AS Language 
FROM    
    dbo.AccountBase 
LEFT OUTER JOIN 
    dbo.new_otherparentinformationBase ON dbo.AccountBase.AccountId = dbo.new_otherparentinformationBase.new_MotherName_lookup 
    ) 
SELECT Customername, 
     AccountName, 
     FullName, 
     MobilePhone, 
     Max(CASE WHEN rn = 1 THEN ParentPhone END) AS ParentPhone1, 
     Max(CASE WHEN rn = 2 THEN ParentPhone END) AS ParentPhone2, 
     Max(CASE WHEN rn = 3 THEN ParentPhone END) AS ParentPhone3, 
     Max(CASE WHEN rn = 4 THEN ParentPhone END) AS ParentPhone4, 
     Language 
FROM cte 
GROUP BY Customername, 
      AccountName, 
      FullName, 
      MobilePhone, 
      Language 

주 같은 시도 그것은 항상 4 ParentPhoneName 당 경우 : 당신이 필요로 NameParentPhone의 수를 알 수없는 경우을 동적 피벗을 사용합니다. 또한 별칭 이름을 사용하여 쿼리를 더 읽기 쉽게 만들 수 있습니다.

+0

친애하는 Prdp 님, 실제로 이름당 ParentPhone 수를 알 수 없습니다. 고급 Microsoft Querier에서는 전문가가 아니므로이를 해결하는 데 도움을 줄 수 있습니다. –

+0

지금은 잘 작동하지만 괜찮습니다. message always : 경고 : ORDER BY 절은 뷰 정의에서 TOP 절에 의해 반환 된 행을 결정할 때만 사용됩니다. 쿼리 자체에서 ORDER BY를 지정하지 않으면 ORDER BY 절은 뷰를 쿼리 할 때 정렬 된 결과를 보장하지 않습니다. –

+0

뷰에서 저장 한 캔트로 쿼리를 저장하고 쿼리와 비슷한 쿼리를 사용하여 뷰 아래에 저장하는 방법을 검색하여이 뷰를 저장하는 방법 –

관련 문제