Я хотел бы вставить копию (с небольшими изменениями) первой записи на группу в таблице. Я могу получить полную первую запись за группу, используя оператор «с» и номер строки над разделом.Как вставить копию верхней строки для каждой группы в Sql
with rankedByTime_PerInteraction as(
SELECT
ROW_NUMBER() over(PARTITION By displayId, ObjectId, InteractionId order by AssetLog.Recorded Desc) as timeRank,
CasLog.*
FROM AssetLog INNER JOIN CasLog ON AssetLog.Id = CasLog.ID
where FixType > 0
)
select newId()
,EVENTCOUNT
,PROTOCOLVERSION
,EVENTLOOKUPSET
,2000
,DISPLAYSERIAL
,DISPLAYID
,MACHINETYPE
,GEAR
,RF_NODE
,OBJECTSERIAL
,OBJECTRSSILEVEL
,OBJECTSTATUS
,OBJECTID
,OBJECTINFO
,CASTIMESTAMP
,SPARE1
,SPARE2
,[CHECKSUM]
,ALARMTIME
,MINRANGE
,EventId
,InteractionId
from rankedByTime_PerInteraction
where timeRank = 1
Которая отлично работает. Однако я хотел бы использовать это в вставке в такой форме.
INSERT INTO [CasLog]
([ID]
,[EVENTCOUNT]
,[PROTOCOLVERSION]
,[EVENTLOOKUPSET]
,[EVENTNUMBER]
,[DISPLAYSERIAL]
,[DISPLAYID]
,[MACHINETYPE]
,[GEAR]
,[RF_NODE]
,[OBJECTSERIAL]
,[OBJECTRSSILEVEL]
,[OBJECTSTATUS]
,[OBJECTID]
,[OBJECTINFO]
,[CASTIMESTAMP]
,[SPARE1]
,[SPARE2]
,[CHECKSUM]
,[ALARMTIME]
,[MINRANGE]
,[EventId]
,[InteractionId])
with rankedByTime_PerInteraction as(
SELECT
ROW_NUMBER() over(PARTITION By displayId, ObjectId, InteractionId order by AssetLog.Recorded Desc) as timeRank,
CasLog.*
FROM AssetLog INNER JOIN CasLog ON AssetLog.Id = CasLog.ID
where FixType > 0
)
select newId()
,EVENTCOUNT
,PROTOCOLVERSION
,EVENTLOOKUPSET
,2000
,DISPLAYSERIAL
,DISPLAYID
,MACHINETYPE
,GEAR
,RF_NODE
,OBJECTSERIAL
,OBJECTRSSILEVEL
,OBJECTSTATUS
,OBJECTID
,OBJECTINFO
,CASTIMESTAMP
,SPARE1
,SPARE2
,[CHECKSUM]
,ALARMTIME
,MINRANGE
,EventId
,InteractionId
from rankedByTime_PerInteraction
where timeRank = 1
Однако я получил неправильный синтаксис рядом с ключевым словом 'with'.
Можно ли использовать оператор with в инструкции insert?
Если нет, то как я могу лучше всего вставить копию первой записи в группу в таблицу?
Благодаря
Если это отвечает на ваш вопрос пометить его как правильный ответ ;) – bksi