如何合并一个table?
How to merge a table?
入站 table:
Date
P_ID
S_ID
Measure1
Measure2
2022-02-12
01
03
100
NULL
2022-02-12
01
03
NULL
200
2022-02-13
01
02
300
NULL
2022-02-13
01
02
NULL
400
此 table 中还有一些度量字段。
在每一行中只有一个度量字段<> NULL。
我想transfer/merge把这个table改成另一个开头是空的:
出站table
Date
P_ID
S_ID
Measure1
Measure2
2022-02-12
01
03
100
200
2022-02-13
01
02
300
400
我试过合并:
MERGE @OutboundTable AS TARGET
USING @InboundTable AS SOURCE
ON TARGET.[Date] = SOURCE.[Date]
AND TARGET.[P_ID] = SOURCE.[P_ID]
AND TARGET.[S_ID] = SOURCE.[S_ID]
WHEN MATCHED THEN UPDATE SET
TARGET.[Measure1] = ISNULL(SOURCE.[Measure1],TARGET.[Measure1]),
TARGET.[Measure2] = ISNULL(SOURCE.[Measure2],TARGET.[Measure2])
WHEN NOT MATCHED THEN
INSERT
(
[Date]
, [P_D]
, [S_ID]
, [Measure1]
, [Measure2]
)
VALUES
(
SOURCE.[Date]
, SOURCE.[P_ID]
, SOURCE.[S_ID]
, SOURCE.[Measure1]
, SOURCE.[Measure2]
)
;
但是没有用。出站 table 包含与入站 table.
相同的行
如何执行此转换?
查询:
INSERT INTO outbound (date, P_ID, S_ID, Measure1, Measure2)
SELECT date, P_ID, S_ID, MAX(Measure1) AS Measure1, MAX(Measure2) AS Measure2
FROM inbound_table
GROUP BY date, P_ID, S_ID;
入站 table:
Date | P_ID | S_ID | Measure1 | Measure2 |
---|---|---|---|---|
2022-02-12 | 01 | 03 | 100 | NULL |
2022-02-12 | 01 | 03 | NULL | 200 |
2022-02-13 | 01 | 02 | 300 | NULL |
2022-02-13 | 01 | 02 | NULL | 400 |
此 table 中还有一些度量字段。 在每一行中只有一个度量字段<> NULL。
我想transfer/merge把这个table改成另一个开头是空的:
出站table
Date | P_ID | S_ID | Measure1 | Measure2 |
---|---|---|---|---|
2022-02-12 | 01 | 03 | 100 | 200 |
2022-02-13 | 01 | 02 | 300 | 400 |
我试过合并:
MERGE @OutboundTable AS TARGET
USING @InboundTable AS SOURCE
ON TARGET.[Date] = SOURCE.[Date]
AND TARGET.[P_ID] = SOURCE.[P_ID]
AND TARGET.[S_ID] = SOURCE.[S_ID]
WHEN MATCHED THEN UPDATE SET
TARGET.[Measure1] = ISNULL(SOURCE.[Measure1],TARGET.[Measure1]),
TARGET.[Measure2] = ISNULL(SOURCE.[Measure2],TARGET.[Measure2])
WHEN NOT MATCHED THEN
INSERT
(
[Date]
, [P_D]
, [S_ID]
, [Measure1]
, [Measure2]
)
VALUES
(
SOURCE.[Date]
, SOURCE.[P_ID]
, SOURCE.[S_ID]
, SOURCE.[Measure1]
, SOURCE.[Measure2]
)
;
但是没有用。出站 table 包含与入站 table.
相同的行如何执行此转换?
查询:
INSERT INTO outbound (date, P_ID, S_ID, Measure1, Measure2)
SELECT date, P_ID, S_ID, MAX(Measure1) AS Measure1, MAX(Measure2) AS Measure2
FROM inbound_table
GROUP BY date, P_ID, S_ID;