【发布时间】:2021-11-07 16:14:49
【问题描述】:
我有两张桌子
CREATE TABLE [dbo].[TestData]
(
[Data] [varchar](2000) NULL,
[DataType] AS (SUBSTRING([Data], (3), (3)))
)
CREATE TABLE [dbo].[TestDataTypes]
(
DataTypeID varchar(3) NOT NULL,
DateTypeName varchar(50) NOT NULL
)
这是一些测试数据:
INSERT INTO TestDataTypes (DataTypeID, DateTypeName)
VALUES ('010', 'DataHeader'),
('020', 'SectionHeader'),
('030', 'SectionData'),
('080', 'SectionFooter'),
('090','DataFooter');
INSERT INTO TestData ([Data])
VALUES ('FI0103146701200242606660000000000000000000020210908074601P'),
('FI020836740675301000031012700000000000000000000000020210908074601'),
('FI03020210907710000000002395847961930920210907018990006320210908000000000689708 CC000000000N'),
('FI03020210907710000000002396398519301520210907395125022320210908000000000016036 CC000000000N'),
('FI03020210907710000000002392918856530120210907738990002520210908000000000024424 CC000000000N'),
('FI0808367406700000000154000000023679373000000000000000'),
('FI09031467012002426066600000000000000000000100000000154');
现在我可以加入我的数据了
SELECT
TD.DataType, TDT.DateTypeName, TD.[data]
FROM
TestData AS TD
INNER JOIN
TestDataTypes TDT ON TD.DataType = TDT.DataTypeID
输出:
010 DataHeader FI0103146701200242606660000000000000000000020210908074601P
020 SectionHeader FI020836740675301000031012700000000000000000000000020210908074601
030 SectionData FI03020210907710000000002395847961930920210907018990006320210908000000000689708 CC000000000N
030 SectionData FI03020210907710000000002396398519301520210907395125022320210908000000000016036 CC000000000N
030 SectionData FI03020210907710000000002392918856530120210907738990002520210908000000000024424 CC000000000N
080 SectionFooter FI0808367406700000000154000000023679373000000000000000
090 DataFooter FI09031467012002426066600000000000000000000100000000154
我怎样才能让它在 XML 中变成这样:
<DataHeader DataType="010" girodata="FI0103146701200242606660000000000000000000020210908074601P" >
<SectionHeader DataType="020" girodata="FI020836740675301000031012700000000000000000000000020210908074601" >
<SectionData DataType="030" girodata="FI03020210907710000000002395847961930920210907018990006320210908000000000689708 CC000000000N" ></SectionData>
<SectionData DataType="030" girodata="FI03020210907710000000002396398519301520210907395125022320210908000000000016036 CC000000000N" ></SectionData>
<SectionData DataType="030" girodata="FI03020210907710000000002392918856530120210907738990002520210908000000000024424 CC000000000N" ></SectionData>
</SectionHeader>
<SectionFooter DataType="080" girodata="FI0808367406700000000154000000023679373000000000000000"></SectionFooter>
<DataFooter DataType="090" girodata="FI09031467012002426066600000000000000000000100000000154"></GiroFooter>
</DataHeader>
【问题讨论】:
标签: sql sql-server xml etl