2015-08-21 2 views
0

У меня есть этот запрос здесь:Получить конкретные столбцы XML пути

SELECT  
    T.AKSIONERET, 
    sd.Identification_No, sd.Date_Of_Incorp, 
    sd.Ownership_Desc, sd.Ownership_Code, 
    sd.Subject_Name_Code, sd.Subject_Name, 
    sd.Subject_Type_Code, 
    LEFT(sd.Object_Desc, 3999) AS Object_Desc, 
    sd.Subject_Status_Name, sd.Subject_Name, 
    nr2.NACE_Code, nr2.NACE_PARENT, nr2.Description, 
    sd.Subject_Type_Name, sd.Subject_Status_Name, 
    sd.Subject_Type_Name, f.Place_Of_Registration, sd.Object_Desc 
FROM    
    NRC_Subject_DEF AS sd 
LEFT JOIN 
    NRC_Nace_REV2 AS nr2 ON nr2.Subject_DEF_Code = sd.Subject_DEF_Code 
LEFT JOIN 
    NRC_ForeignCompany AS f ON sd.ForeignCompany_Code = f.ForeignCompany_Code    
LEFT JOIN 
    (SELECT 
     SDP.Subject_DEF_Code, 
     (SELECT 
       SDP1.Subject_DEF_Code, P.First_Name + ' ' + P.Last_Name + '-' + P.Citizenship_Desc AS FullAksionerCitizenship 
      FROM 
       NRC_PeopleAddress P 
      INNER JOIN 
       NRC_SubjectDefPeople SDP1 ON SDP1.People_Code = P.People_Code 
      WHERE 
       SDP1.Subject_DEF_Code = SDP.Subject_DEF_Code       
      GROUP BY 
       SDP1.Subject_DEF_Code, P.First_Name + ' ' + P.Last_Name + '-' + P.Citizenship_Desc 
      FOR XML PATH('')) AS AKSIONERET 
     FROM 
      NRC_SubjectDefPeople SDP 
     WHERE 
      SDP.Groyp_Type IN (1,2)   
     GROUP BY 
      SDP.Subject_DEF_Code) AS T ON T.Subject_DEF_Code = SD.SUBJECT_DEF_CODE 

Мне нужно получить, вместо T.AKSIONERETFullAksionerCitizenship, который я получаю от XML для пути.

Я знаю, что мне нужно сделать некоторые другие SELECT, но я продолжал получать ошибки, синтаксические ошибки.

Может кто-нибудь помочь?

Заранее спасибо

+0

Вы можете скопировать последний LEFT JOIN, который включает этот столбец. Затем вы забираете всю другую информацию. Таким образом, вы получите этот столбец один раз в своей XML-конструкции и снова как отдельный столбец – Shnugo

+0

@ Шнуго не могли бы вы вставить код, как мне это сделать? –

+0

Сделал так ... Пожалуйста, проголосуйте за/отметьте как полезный (если полезно :-)) – Shnugo

ответ

0

Я совершенно уверен, что может быть лучше дизайн, и я не в состоянии выполнить команду на тестовых данных с курса, но это может работать:

SELECT  
    T.AKSIONERET, 
    T2.FullAksionerCitizenship, 
    sd.Identification_No, sd.Date_Of_Incorp, 
    sd.Ownership_Desc, sd.Ownership_Code, 
    sd.Subject_Name_Code, sd.Subject_Name, 
    sd.Subject_Type_Code, 
    LEFT(sd.Object_Desc, 3999) AS Object_Desc, 
    sd.Subject_Status_Name, sd.Subject_Name, 
    nr2.NACE_Code, nr2.NACE_PARENT, nr2.Description, 
    sd.Subject_Type_Name, sd.Subject_Status_Name, 
    sd.Subject_Type_Name, f.Place_Of_Registration, sd.Object_Desc 
FROM    
    NRC_Subject_DEF AS sd 
LEFT JOIN 
    NRC_Nace_REV2 AS nr2 ON nr2.Subject_DEF_Code = sd.Subject_DEF_Code 
LEFT JOIN 
    NRC_ForeignCompany AS f ON sd.ForeignCompany_Code = f.ForeignCompany_Code    
LEFT JOIN 
    (SELECT 
     SDP.Subject_DEF_Code, 
     (SELECT 
       SDP1.Subject_DEF_Code, P.First_Name + ' ' + P.Last_Name + '-' + P.Citizenship_Desc AS FullAksionerCitizenship 
      FROM 
       NRC_PeopleAddress P 
      INNER JOIN 
       NRC_SubjectDefPeople SDP1 ON SDP1.People_Code = P.People_Code 
      WHERE 
       SDP1.Subject_DEF_Code = SDP.Subject_DEF_Code       
      GROUP BY 
       SDP1.Subject_DEF_Code, P.First_Name + ' ' + P.Last_Name + '-' + P.Citizenship_Desc 
      FOR XML PATH('')) AS AKSIONERET 
     FROM 
      NRC_SubjectDefPeople SDP 
     WHERE 
      SDP.Groyp_Type IN (1,2)   
     GROUP BY 
      SDP.Subject_DEF_Code) AS T ON T.Subject_DEF_Code = SD.SUBJECT_DEF_CODE 
--here starts the new block (difficult for me without knowing your db...) 
LEFT JOIN 
    (SELECT 
     (SELECT 
       SDP1.Subject_DEF_Code, P.First_Name + ' ' + P.Last_Name + '-' + P.Citizenship_Desc AS FullAksionerCitizenship 
      FROM 
       NRC_PeopleAddress P 
      INNER JOIN 
       NRC_SubjectDefPeople SDP1 ON SDP1.People_Code = P.People_Code 
      WHERE 
       SDP1.Subject_DEF_Code = SDP.Subject_DEF_Code       
      GROUP BY 
       SDP1.Subject_DEF_Code, P.First_Name + ' ' + P.Last_Name + '-' + P.Citizenship_Desc 
     ) AS FullAksionerCitizenship 
     FROM 
      NRC_SubjectDefPeople SDP 
     WHERE 
      SDP.Groyp_Type IN (1,2)   
     GROUP BY 
      SDP.Subject_DEF_Code) AS T2 ON T2.Subject_DEF_Code = SD.SUBJECT_DEF_CODE 
+0

Извините, забыли запятую после T2.FullAksionerCitizenship – Shnugo

+0

Большое спасибо! –