我在临时表中有如下所示的数据:
col
-----
23041
ORF5674
FNRA
FIX_44
0
AE
主表架构:
CREATE TABLE [dbo].[t_Act](
[EventType] [nvarchar](50) NULL,
[ClientMsgID] [nvarchar](50) NULL,
[SessionID] [nvarchar](50) NULL,
[Protocol] [nvarchar](50) NULL,
[MessageType] [nvarchar](50) NULL,
[SequenceNumber] [nvarchar](50) NULL, )
我想将数据插入主表。
答案 0 :(得分:0)
试试这个:
INSERT INTO [dbo].[t_Act]
SELECT MAX(CASE WHEN D.RN=1 THEN D.Col END)[EventType]
,MAX(CASE WHEN D.RN=2 THEN D.Col END) [ClientMsgID]
,MAX(CASE WHEN D.RN=3 THEN D.Col END) [SessionID]
,MAX(CASE WHEN D.RN=4 THEN D.Col END) [Protocol]
,MAX(CASE WHEN D.RN=5 THEN D.Col END) [MessageType]
,MAX(CASE WHEN D.RN=6 THEN D.Col END) [SequenceNumber]
FROM(
SELECT *
,ROW_NUMBER() OVER(ORDER BY (SELECT NULL))RN
FROM #TempTable
)D
如果您有任何要对行值进行排序的列,请在上述查询中使用该值。
ROW_NUMBER() OVER(ORDER BY OrderColumn)RN
而不是
ROW_NUMBER() OVER(ORDER BY (SELECT NULL))RN
这不是100%安全的方法。