безопасность для некоторых пользователей только для чтения активной записи (флаг 1 или последняя дата) - PullRequest
0 голосов
/ 25 июня 2018

В хранилище данных (SQL Server 2012) и для некоторых таблиц я хочу реализовать параметр, при котором некоторые пользователи могут видеть только последнюю строку (дату или флаг) вместо всей истории. Возможно ли это?

1 Ответ

0 голосов
/ 25 июня 2018

ПРОСМОТРЫ были бы хорошим вариантом использования для этого ... что-то вроде этого с использованием оконной функции для поиска "последней" записи.Вы также можете использовать MAX() на dateColumn с внутренним соединением.Просто заполните раздел раздела <column1, column2>, чтобы сгруппировать свои данные. Вот документы по этому вопросу.

create view myView
as

;with cte as(
select
   primaryKey
   ,column2
   ,dateColumn
   ,RN = row_number over (partition by <column1, column2> order by dateColumn desc)
from
   YourTable)

select 
   primaryKey
   ,column2
   ,dateColumn
from cte
where RN = 1

Затем для пользователей, которым вы хотите видеть только эти данные ... вы бы явно предоставили им просмотр.

grant select on myView to MyUserGroup
...