2010-09-22 8 views
0

У меня есть таблица, содержащая несколько записей на сотрудника с помощью эффективных данных и эффективной последовательности: EMPLID, EFFDT, EFFSEQ.SQL Server 2005 Views

Я пытаюсь найти представление, в котором я мог бы указать дату и дату, отличную от текущей, и получить самую последнюю запись для каждого сотрудника с этой даты. Запрос, который я обычно использую:

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()) 

Есть ли способ, чтобы создать представление о SQL Server, в котором я могу указать дату для сравнения INNERALIAS.EFFDT во втором подзапрос?

+2

Вы, кажется, ищете параметризованный вид. Это называется табличной функцией. –

+0

Есть ли причина, по которой вы хотите видеть вместо хранимой функции proc или @table? – JNK

+0

Да. Я могу создать sp и/или функцию, но моя задача - создать отчет на основе Excel, используя эту информацию. Когда я пытаюсь включить подселекцию в своих отчетах Excel, они не могут больше использоваться для редактирования (параметры, модификация и т. Д.). Я пытаюсь создать представление (или некоторые другие средства), чтобы обойти его. – Jason

ответ

0

Вы не можете параметризовать представление, но вы можете оставить свой вид как есть и параметризовать sp, который возвращает результаты из представления, ограниченного вашим параметром, и отправляет вывод sp в таблицу и использует эту таблицу в Excel ,

+0

Есть ли в любом случае, чтобы пользователь выполнял sp через Excel (или некоторые другие удобные для пользователя средства)? – Jason

+1

Думаю, для этого вам понадобится больше, чем Excel. Может быть, интерфейс доступа? – Beth