我想将一些现有数据传输到新数据表中。
我有替换表: - ID - currentItemId - formerItemId - contentId
对于相同的内容,我可能有多个条目用于组合currentItemId和formerItemId。
让我说明现在的情况:
ID_T1 currentItemId formerItemId contentId
1 100 200 300
2 100 200 301
3 100 200 302
4 105 201 303
5 105 201 304
6 110 205 320
7 111 206 321
8 120 204 322
9 130 208 323
10 130 208 324
现在,我想为每个组合beforeItemId和currentItemId选择TOP ID:
ID ID_T1 contentId
1 1 300
2 1 301
3 1 302
4 4 303
5 4 304
6 6 320
7 7 321
8 8 322
9 9 323
10 9 324
这两个表还包含时间戳和其他一些数据 - 我没有将其包含在示例中以便更容易理解。
我尝试了自我加入(没有成功),嵌套选择(给我原始组合的正确值,但它没有重复,它给我ID其他记录的NULL),但似乎没有任何效果。试过像:
SELECT di1.ID,
(SELECT TOP(1) di1.ID
FROM TABLE
WHERE
di1.currentItemtId = di2.currentItemtId AND di1.formerItemId = di1.formerItemId
) AS repeat
,di2.deleteItemId
,di1.currentitemtId
,di1.formerItemId
,di1.contentId
FROM Table di1
LEFT JOIN
Table di2 ON di1.ID = di2.ID
但这种方式ID不重复 - 我得到的ID与普通选择相同。
我正在使用SQL Server 2008。
非常感谢任何帮助。
答案 0 :(得分:2)
请尝试:
SELECT
MIN(ID) OVER (PARTITION BY currentItemId, formerItemId) ID,
currentItemId,
formerItemId,
contentId
FROM YourTable
SELECT
ID,
MIN(ID) OVER (PARTITION BY currentItemId, formerItemId) ID_T1,
contentId
FROM YourTable