我有三个表 TelNo , RefNo 和 Ref_Check_No 。 RefNo 和 Ref_Check_No 分别包含 Telephone_Id 和 Entity_Id 列以及其他列,而 TelNo 有 Telephone_Id 和 Entity_Id 。我想要做的是将 Ref_Check_No 中的所有记录插入到 RefNo 表中。 TelNo 表包含每个 Entity_Id 的 Telephone_Id 。提到的所有这些列都不是唯一的。
我知道如何从 Ref_Check_No 表中插入数据。但是,我似乎无法为每个 Entity_Id 插入 Telephone_Id 值。我想要做的是从 TelNo 表中检索每 Entity_Id 的MAX Telephone_Id 号码,并为每个增加1使用insert语句在 RefNo 表中的Entity_Id 。以下是我希望在 RefNo 表中实现的示例:
**TelNo Table** **RefNo Table**
Telephone_Id Entity_Id Telephone_Id Entity_Id
1 ABCD 4 ABCD
2 ABCD 5 ABCD
3 ABCD 6 ABCD
89 EFGH 7 ABCD
90 EFGH 96 EFGH
95 EFGH 97 EFGH
基本上我想要做的是从每个 Entity_Id (ABCD和EFGH)找到MAX Telephone_Id 号码 TelNo 表格,并在 RefNo 表格中为每个对应的 Entity_Id 增加1。
下面是我正在处理的代码,我似乎无法做对。
INSERT INTO
RefNo
(
Telephone_Id,
Entity_ID,
ContactName
)
SELECT
(SELECT COUNT(*) FROM Ref_Check_No b WHERE(a.Entity_Id = b.Entity_Id)
ISNULL ((SELECT MAX(Telephone_Id) AS Telephone_Id FROM TelNo
WHERE (Entity_Id = a.Entity_Id)), 0) AS Telephone_Id,
Entity_ID,
ContactName
FROM
Ref_Check_No
有没有办法找到MAX Telephone_Id 号码,并在 RefNo <中插入数据时使用相关子查询为每个 Entity_Id 递增1 / strong>同时表?
答案 0 :(得分:0)
我很难理解你的榜样。您想在RefNo中为Ref_Check_No中的每条记录创建一行,使用相同的Entity_ID和增加的Telephone_ID标记每一行吗?
如果是这种情况,请尝试此操作(对于MSSQL):
INSERT INTO RefNo (Entity_ID, Telephone_ID)
SELECT r.Entity_ID,
t.MAXID + ROW_NUMBER() OVER(Partition BY r.Entity_ID order by r.Telephone_ID) AS Telephone_ID
FROM ref_check_no r
INNER JOIN (
SELECT Entity_ID, Max(Telephone_ID) as MaxID
FROM TelNo
GROUP BY Entity_ID) t
ON r.Entity_ID=t.Entity_ID