基本上,我想使用group by子句将A表中的特定列插入B表中。一个表是父子关系表,我想将该记录移到两个表中,一个用于父记录,另一个用于明细记录。一对多关系。为此,我需要使用group by子句在A表中插入需要的特定列。这是我的尝试。
INSERT INTO tbl_ItemReturnMaster (FromTo_Type_Id, From_Id, To_Id, ReturnedDate,
StatusId, UserId, Reason, DateUpdated, PharmaReturnID)
SELECT
FromTo_TypeId, From_Id, To_Id, ReturnDate,
StatusId, UserId, Reason, DateUpdated, PharmaReturnID
FROM
tbl_InternalItemReturns
GROUP BY
ReturnBatchID, From_Id
我使用以下查询来获取我真正需要使用group by的记录,这里是查询。
select
ReturnBatchID, From_Id
from
tbl_InternalItemReturns
group by
ReturnBatchID, From_Id
运行第一个查询时,出现此错误:
Msg 8120,第16级,状态1,第19行
在选择列表中,列“ tbl_InternalItemReturns.FromTo_TypeId”无效,因为该列既不包含在聚合函数中,也不包含在GROUP BY子句中。
但是问题是我不想使用group by子句中的所有列,它会向我返回不必要的记录,并且我不想将这些记录插入B表中。
答案 0 :(得分:1)
我怀疑您确实想要窗口功能,例如:
SELECT FromTo_TypeId, From_Id, To_Id, ReturnDate,
StatusId, UserId, Reason, DateUpdated, PharmaReturnID
FROM (SELECT iir.*,
ROW_NUMBER() OVER (PARTITION BY ReturnBatchID, From_Id ORDER BY DateUpdated DESC) as seqnum
FROM tbl_InternalItemReturns iir
) iir
WHERE seqnum = 1;
每ReturnBatchID
/ From_Id
对返回一行。特定行是最近更新的行。