2012-03-26 2 views
1

У меня есть представление в SQL Server 2008, которое я хочу использовать для отчета в SSRS 2008.Можно ли добавить столбец «проверить, если предыдущий» на представление?

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

Теперь в БД имеются две разные таблицы для зданий и одна для школ (потому что иногда для одной школы существуют другие здания или другие подобные сценарии). Присоединение к ним приводит к созданию большего количества школ для школ, чем это необходимо для столбца компьютерной суммы, это приведет к суммированию в разное время одного и того же здания (если в этом здании работает более одной школы).

В таблице это:

enter image description here

Чтобы избежать этого, я сделал эти два набора данных, один из точки здания зрения, и один из школьной точки зрения. Но это два набора данных за один стол! Чтобы решить мою проблему, я подумал добавить специальный столбец к моему представлению: он проверяет автоматически, еслиотображается дважды или более в таблице результатов, т. Е. как это:

enter image description here

Проблема заключается в том, что я не знаю, если это возможно, и если это так, я не знаю, как это сделать.

+1

Как вы определяете предыдущую колонку, я не вижу идентификатора, ни метку времени –

+0

Вот что Я не знаю. Как узнать предыдущие BUILDING_ID. – Hari

ответ

2

Может быть, это может дать вам подсказку:

select building_id, 
row_number() over (partition by building_id order by newid()) - 1 check_if_previous 
from yourtable 

Если вы просто хотите 1-й или 0-х

select building_id, 
cast(row_number() over (partition by building_id order by newid()) - 1 as BIT) check_if_previous 
from yourtable 
+0

Это потрясающе! Он делает именно то, что мне нужно. Большое спасибо за этот ответ! – Hari

+0

Я реализовал это в другом представлении (для другого отчета), но вот так: 'ROW_NUMBER() OVER (PARTITION by FOLDERS.SERIAL, SCHOOLS.SCHOOL_NAME ORDER BY NEWID()) - 1 CHECK_IF_PREVIOUS_SCHOOL'.A папка - это местоположение школа, поэтому есть несколько школ, которые работают в разных местах, они учитываются как разные школы (одна школа ---> два места = две школы). Но каждый раз, когда я выполняю представление/запрос, он дает мне разные значения CHECK_IF_PREVIOUS_SCHOOL = 0. ???? – Hari

+0

@ Харри да, первый будет случайным. Как я спросил раньше: как вы определяете предыдущий столбец. Поскольку вы не определили порядок сортировки. Я выбрал случайный порядок. Я понимаю, что это может быть проблемой. Но вы не указали столбец для моего заказа. –

Смежные вопросы