2010-09-22 8 views
0

J'ai une table qui contient plusieurs enregistrements par employé par données effectives et séquence effective: EMPLID, EFFDT, EFFSEQ. J'essaie d'obtenir une vue dans laquelle je pourrais spécifier une Date de Date autre que la date actuelle et obtenir l'enregistrement le plus récent pour chaque employé à cette date. La requête que je l'habitude d'utiliser est:Vues SQL Server 2005

SELECT C.EMPLID, C.EFFDT, C.EFFSEQ 
    FROM PS_JOB C 
WHERE C.EFFSEQ = (SELECT MAX(INNERALIAS.EFFSEQ) 
        FROM PS_JOB INNERALIAS 
        WHERE INNERALIAS.EMPLID = C.EMPLID 
         AND INNERALIAS.EFFDT = C.EFFDT) 
    AND C.EFFDT = (SELECT MAX(INNERALIAS.EFFDT) 
        FROM PS_JOB INNERALIAS 
        WHERE INNERALIAS.EMPLID = C.EMPLID 
        AND INNERALIAS.EFFDT <= GetDate()) 

Est-il possible de créer une vue sur le serveur SQL dans lequel je peux spécifier une date de comparer la INNERALIAS.EFFDT au deuxième sous-sélection?

+2

Vous semblez rechercher une vue paramétrée. C'est ce qu'on appelle une fonction de table. –

+0

Y a-t-il une raison pour laquelle vous voulez une vue au lieu d'une fonction proc ou @table? – JNK

+0

Oui. Je suis capable de créer une fonction sp et/ou une fonction, mais mon défi est de créer un rapport basé sur Excel en utilisant cette information. Lorsque j'essaie d'inclure une sous-sélection dans mes rapports Excel, ils ne peuvent plus être utilisés pour les modifications (paramètres, modification, etc.). J'essaie de créer une vue (ou d'autres moyens) pour contourner le problème. – Jason

Répondre

0

Vous ne pouvez pas paramétrer une vue, mais vous pouvez laisser votre vue telle quelle et paramétrer un sp qui renvoie les résultats de la vue limitée par votre paramètre et envoyer la sortie de sp vers une table et utiliser cette table dans Excel .

+0

Y at-il de toute façon que l'utilisateur exécute le sp via Excel (ou d'autres moyens conviviaux)? – Jason

+1

Je pense que vous aurez besoin de plus que Excel pour cela. Peut-être un frontal d'Access? – Beth