Comment puis-je joindre les résultats de deux requêtes dans SQL Server?

C'est mon deuxième SQL question aujourd'hui - je suis un peu un newbie sur le DBA choses...

Je suis en train de réunir un complexe de requête sql pour fusionner les données dans environ 12 tables en 1 seule table. Bien qu'il existe de nombreuses relations dans la base de données, je sais ce que le nombre maximum de chaque être.

Donc, j'ai (avec un débordement de pile de l'aide!) aplatir le premier niveau de ma base de données, et d'avoir une paire de requêtes qui doivent être réunis:

(version abrégée)

SELECT 
  A.StudentId, C1.Topic AS SIoC1, C1.Level AS SIoCScore1
FROM Assessment A
  LEFT JOIN Concern C1 ON A.Id = Assessment_Id and C1.TopicNumber = 1
WHERE A.Type = 'School'

SELECT 
  A.StudentId, C1.Topic AS PIoC1, C1.Level AS PIoCScore1
FROM Assessment A
  LEFT JOIN Concern C1 ON A.Id = Assessment_Id and C1.TopicNumber = 1
WHERE A.Type = 'Parent'

Est-il possible de requêtes de noms comme les alias?

Ou sinon, comment puis-je adhérer à ces deux requêtes, la sortie est identique:

| A.Id | SIoC1 | SIoCScore1 | PIoC1 | PIoCScore1 |

** Mise à JOUR **
Le domaine de base est qu'une Évaluation est effectuée, sur laquelle à la fois l'école et les parents doivent en faire rapport. Aussi, la ligne identifie une évaluation qui a à la fois l'École et les Parents des valeurs sur elle.

Je suis à l'aide de SQL Server 2005.

Merci!

* MISE À JOUR *
Cette requête semble faire le job...

SELECT PreConcerns.StudentId, TIoC1, TIoCScore1, PIoC1, PIoCScore1 
FROM
  Assessment PreConcerns
  LEFT OUTER JOIN
  (
    SELECT 
      P.StudentId, C1.Topic AS TIoC1, C1.Level AS TIoCScore1
    FROM Assessment  P
      LEFT JOIN Concern C1 ON P.Id = C1.Assessment_Id and C1.TopicNumber = 1
    WHERE P.Type = 'School'
  ) scons
  ON scons.StudentId= PreConcerns.StudentId
  LEFT OUTER JOIN
  (
    SELECT 
      P.StudentId, C1.Topic AS PIoC1, C1.Level AS PIoCScore1
    FROM Assessment  P
      LEFT JOIN Concern C1 ON P.Id = C1.Assessment_Id and C1.TopicNumber = 1
    WHERE P.Type = 'Parent'
  ) pcons
ON pcons.StudentId = PreConcerns.StudentId

Nouvelle mise à JOUR (prendre 2!) **
(Je ne suis pas sûr si je devrais rouvrir une nouvelle question??!)
J'ai repris le travail aujourd'hui, de trouver mon au-dessus de "solution" n'a pas vraiment résoudre le problème, il crée deux lignes pour chaque évaluation.

Donc, pour résumer, j'ai les tableaux suivants:

Student (int:id, varchar(50):name)
Assessment (int:id, date:date, int:StudentId, )
Concern (int:id, int:assessment_id, varchar(20):topic, int:level)

Donc, pour chaque élève dans le système il y a exactement deux Évaluations: l'une de type "École", et une de type 'Parent'.

Je veux créer une ligne unique qui combine les évaluations et les préoccupations:

(pseudo colonnes:)

| Assessment.StudentId | SchoolConcernTopic | SchoolConcernLevel | ParentConcernTopic | ParentConcernLevel |

ou à partir de sql ci-dessus:

| PreConcerns.StudentId | SIoC1 | SIoCScore1 | PIoC1 | PIoCScore1 |

Avec une seule ligne peuplée par des étudiants, qui combine les deux évaluations.
J'ai la structure de ce travail avec le SQL ci-dessus, mais il retourne deux lignes! Et je ne peux pas travailler sur la façon de mettre à jour ce seulement le retour d'une toute aide reçue avec gratitude!!

Merci, comme toujours!

InformationsquelleAutor laura | 2011-02-02