2012-03-26 77 views
1

我在SQL Server 2008中的观点,我想在SSRS 2008年是否可以在视图中添加“检查以前”列?

要用于报告的主要问题是,我有一个表中使用两个不同的数据集,因为我想它不能做分组。这两个数据集都来自这个观点。比方说,在我的报告表的一列中,我想对我国所有学校建筑物的所有计算机进行求和。在另一栏中,每个电脑的学校学生比例。

现在,在数据库有两个不同的表一为建筑物和一个用于学校(因为有时有一个学校或其他类似的场景不同的建筑)。加入他们将导致更多的夫妇在校舍内学习计算机总数列,这将导致同一建筑物的不同时间相加(如果该建筑物中有多个学校在运行)。

表是这样的:

enter image description here

为了避免这种情况我已经做了这两个数据集,单从建设点,单从学校的角度。但是这些是两张数据集在一张桌子上!为了解决我的问题,我曾想过在我的视图中添加一个特殊的列:它会自动检查在结果表f.e中是否显示了两次或更多次BUILDING_ID。像这样:

enter image description here

的问题是,我不知道这是可能的,如果是这样,我不知道该怎么做。

+1

你如何定义一个以前的专栏中,我看不出有任何标识,也没有时间戳 – 2012-03-26 11:02:32

+0

这就是我不知道。如何识别以前的BUILDING_ID。 – Hari 2012-03-26 11:05:10

回答

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 2012-03-26 11:31:00

+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 2012-03-26 13:17:55

+0

@哈里是的,第一个是随机的。正如我前面问到的那样:您如何定义前一列。由于您没有定义排序顺序。我选了一个随机订单。我意识到这可能是一个问题。但是你没有为我的订单提供专栏。 – 2012-03-26 13:36:00

相关问题