J'ai une requête que je n'arrive pas à faire fonctionner correctement. J'ai 3 tables; Personne, PersonneProgramme et Catégorie.Requête avec priorité
Person: ID, ....
PersonProgram: ID, PersonID, Category, Code ...
Category: ID, ...
La table personne a 1 dossier pour chaque personne et le PersonProgram a plusieurs programmes par personne. Il y a 4 catégories et j'ai besoin de tirer dans une seule rangée, de chaque personne, avec le programme spécifique de chaque catégorie.
Personne Tableau:
1
2
3
PersonProgram Tableau
1, 1, 1, 1
2, 1, 2, 1
3, 1, 1, 3
4, 2, 1, 1
5, 2, 3, 3
Quel devrait être le résultat souhaité:
PersonID, ProgramIDforCat1, ProgramIDforCat2, ProgramIDforCat3, ProgramIDforCat4
1, 1, 2, NULL, NULL
2, 1, NULL, 3, NULL
Le problème est qu'il ya plusieurs enregistrements de programme pour chaque personne et catégorie avec un code de 1, 2 ou 3. Je dois mettre la priorité sur le code 1 puis le code 3 et igno Re le reste, tout en tirant seulement 1 enregistrement, ou NULL s'il n'existe pas. Je le perds en essayant de faire fonctionner cela.
FYI, il doit être dans une vue.
Merci pour toute aide.
Les résultats de mon exemple étaient probablement faux, WAY à long avec cette requête. Je vais regarder ça, ça a l'air très prometteur. Quitter l'heure le vendredi :) –
Peut-on utiliser 'ROW_NUMBER' dans une vue? Si je l'ajoute, SSMS se bloque à chaque fois. Utilisation de SQL 2005. –
@durilai - Oui. Si le concepteur ne peut pas faire face à cela, essayez de le faire via le script 'CREATE VIEW dbo.ViewName AS AVEC pp2 AS ...' –