Выбрать из CTE с использованием AS? SQL Server 2008

I ' м пытаюсь преобразовать PostgreSQL в SQL Server. Но этот запрос не работает.

Что я делаю не так? Я попытался поставить точку с запятой перед WITH, но мне не повезло.

   SELECT 
      member_a AS you, member_b AS mightknow, shared_connection,
      CASE
         WHEN (n1.member_job_country = n2.member_job_country AND n1.member_job_country = n3.member_job_country) THEN 'country in common'
         WHEN (n1.member_unvan_id = n2.member_unvan_id AND n1.member_unvan_id = n3.member_unvan_id) THEN 'unvan in common'
         ELSE 'nothing in common'
      END AS reason
   FROM (
      WITH transitive_closure(member_a, member_b, distance, path_string, direct_connection) AS
        (SELECT 
             member_a, member_b, 1 AS distance,
             CAST(member_a as varchar(MAX)) + '.' + CAST(member_b as varchar(MAX)) + '.' AS path_string,
             member_b AS direct_connection
         FROM Member_Contact_Edges
         WHERE member_a = 45046 -- set the starting node

         UNION ALL

         SELECT 
             tc.member_a, e.member_b, tc.distance + 1,
             CAST(tc.path_string as varchar(MAX)) + CAST(e.member_b as varchar(MAX)) + '.' AS path_string,
             tc.direct_connection
         FROM Member_Contact_Edges AS e
         JOIN transitive_closure AS tc ON e.member_a = tc.member_b
         WHERE tc.path_string NOT LIKE '%' + CAST(e.member_b as varchar(MAX)) + '.%'
         AND tc.distance < 2
        )

   SELECT
       member_a, member_b,direct_connection AS shared_connection
   FROM transitive_closure
   WHERE distance = 2
  ) AS youmightknow
  LEFT JOIN Members AS n1 ON youmightknow.member_a = n1.memberID
  LEFT JOIN Members AS n2 ON youmightknow.member_b = n2.memberID
  LEFT JOIN Members AS n3 ON youmightknow.shared_connection = n3.memberID
  WHERE (n1.member_job_country = n2.member_job_country 
         AND n1.member_job_country = n3.member_job_country)
        OR (n1.member_unvan_id = n2.member_unvan_id 
            AND n1.member_unvan_id = n3.member_unvan_id);

Я получаю ошибку:

Сообщение 156, уровень 15, состояние 1, строка 11
Неправильный синтаксис рядом с ключевым словом WITH.
Сообщение 319, уровень 15, состояние 1, строка 11
Неправильный синтаксис рядом с ключевым словом "с". Если это утверждение общее табличное выражение, предложение xmlnamespaces или изменение предложение контекста отслеживания, предыдущее заявление должно заканчиваться точка с запятой.
Сообщение 102, уровень 15, состояние 1, строка 34
Неправильный синтаксис рядом с ')'.

Вот ссылка; Графики в базе данных - SQL встречается с социальными сетями - См. Раздел с предложениями facebook внизу статьи.

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

6
задан Shog9 14 November 2013 в 15:09
поделиться