基于SQL

时间:2015-08-21 00:02:38

标签: sql sql-server-2008

我有两张桌子T1和T2。

T1包含以下列:

Id, EntityId, TypeofValue, Year, value

EntityId可以有7个值:

1,2,3,4,5,100,101

Typeofvalue可以有2个值

  • 1表示实际

  • 2表示目标

T2有以下列:

NoOfRecordsToDisplay

我需要获取与Id对应的Target的记录数(如果存在)。目标的记录计数(如果有任何记录,则为1,如果没有则为0)需要分为两类:第一组具有Entityid 1,最大记录位于第二组,实体2,3,4,100,101 [Not 5]

然而,捕获量是:

  • 有时目标价值可能一年不存在
  • 我需要根据NoOfRecordsToDisplay(要显示的记录数量来自T2)获得目标的最后记录

示例1:

NoOfRecordsToDisplay =3, ID =123 

以下数据应返回

CountGroup1: 1, Countgroup2: 1

因为Entityid 1在过去3年中至少有一个目标价值-2015,2014,2013在这种情况下

因为Entityid 2或3在2014年,2014年至少有1个值

Id  EntityId  TypeofValue   Year    Value
123     1       1           2015    55
123     1       1           2014    56
123     1       1           2013    57
123     1       1           2012    58
123     1       2           2015    50
123     1       2           2014    50
123     1       2           2013    50
123     1       2           2012    50
123     2       1           2015    55
123     2       1           2014    56
123     3       1           2015    57
123     3       1           2014    58
123     2       2           2015    55
123     2       2           2014    56
123     3       2           2015    57
124     1       1           2015    55
124     1       1           2014    56
124     2       1           2013    57
124     2       1           2012    58
124     1       2           2015    50
124     1       2           2014    50
124     2       2           2013    50
124     2       2           2012    50

另一个数据集

NoOfRecordsToDisplay =3, ID =123 

以下数据应返回:

CountGroup1: 0, Countgroup2: 1

因为Entityid 1在过去3年没有目标值(entityid 1具有目标值但是2012年)

因为Entityid 2在目标年份-2015具有一个值(entityid 3具有目标值但是2010年)

Id  EntityId  TypeofValue   Year    Value
123     1       1           2015    55
123     1       1           2014    56
123     1       1           2013    57
123     1       1           2012    58
123     1       2           2012    58
123     2       1           2015    55
123     2       1           2014    56
123     2       2           2015    55
123     2       2           2011    56
123     3       2           2010    57

非常感谢你的帮助。

我一直试图找到这个解决方案很长一段时间,我不确定Pivot是否会提供帮助

这个问题与我发布的另一个问题不同,因为我试图根据实体组创建一个群组计数。

0 个答案:

没有答案