【发布时间】:2020-08-08 20:56:34
【问题描述】:
试图将多列合并为行。预期的结果是
这是我尝试过的示例数据。如果整体速度更快,我也愿意接受 unpivot。完整的数据有 15 个 AttributeID、AttributeData 列。
DROP TABLE Attribute;
CREATE TABLE Attribute
(
Producttitle varchar(200),
AttributeID_1 varchar(50),
AttributeData_1 varchar(50),
AttributeID_2 varchar(50),
AttributeData_2 varchar(50),
AttributeID_3 varchar(50),
AttributeData_3 varchar(50)
);
INSERT INTO Attribute
VALUES ('title1', '3145', 'Specific', '30', 'Yes', '40', 'Pink')
INSERT INTO Attribute
VALUES ('title2', '17', 'Stainless', '19', 'smoke', '19', 'Something');
SELECT
Producttitle,
[AttributeID],
[AttributeData]
FROM
Attribute
CROSS APPLY
(SELECT 'Indicator1', [AttributeID_1] UNION ALL
SELECT 'Indicator2', [AttributeID_2] UNION ALL
SELECT 'Indicator3', [AttributeID_3]) c (indicatorname, [AttributeID])
CROSS APPLY
(SELECT 'Indicator1', [AttributeData_1] UNION ALL
SELECT 'Indicator2', [AttributeData_2] UNION ALL
SELECT 'Indicator3', [AttributeData_3]) d (indicatorname, [AttributeData]);
【问题讨论】:
-
您是否已经有了可行的解决方案,并且正在寻找更快的实施方案?
-
我还没有可行的解决方案。我通过上述查询得到的结果重复了所有内容。
标签: sql sql-server unpivot cross-apply