我需要通过SQLServer 2008表hstT
和hstD
中的视图进行JOIN。主表包含有关雇员及其“登录”的数据(因此,多个记录在x个月内与x雇员相关联),第二个表具有基于月数的有关其区域的信息,我需要加入这两个表,但要保留最早的记录作为联接和与该ID关联的其余记录的参考。
因此hstT
类似于:
id id2 period name
----------------------
x 1 0718 john
x 1 0818 john
y 2 0718 jane
还有hstD
:
id2 period area
----------------------
1 0718 sales
1 0818 hr
2 0707 mng
使用OUTER JOIN
,我设法合并基于ID2
(用户ID)和period
BUT的所有数据,就像我提到的那样,我需要根据最早的记录加入另一个表通过关联ID
(以我可以用作标准),它看起来像这样:
id id2 period name area
---------------------------
x 1 0718 john sales
x 1 0818 john sales
y 2 0718 jane mng
我知道我可以使用ROW_number
,但是我不知道如何在视图中使用它并在这些条件下将其加入:
SELECT T.*,D.*, ROW_NUMBER() OVER (PARTITION BY T.ID ORDER BY T.PERIOD ASC) AS ORID
FROM dbo.hstT AS T LEFT OUTER JOIN
dbo.hstD AS D ON T.period = D.period AND T.id2 = D.id2
WHERE ORID = 1
--promps error as orid doesn't exist in any table
答案 0 :(得分:1)
您可以使用declare module 'package-without-ts' {
class ClassA {
public options: object
constructor (options: IOptions) // {} in your code is invalid
}
export = ClassA // special syntax for commonjs style export
}
:
apply
实际上,如果您只想要最早的期限,则可以过滤并select t.*, d.area
from hstT t outer apply
(select top (1) d.*
from hstD d
where d.id2 = t.id2 and d.period <= t.period
order by d.period asc
) d;
:
join