我正在使用SQL Server 2014,表A中有以下列(称为详细信息):
Details
STD RN
CPL DEL REV
DLX RN
FAS REV
CJS SUP REV
COS RN
我在表B中有一个专栏(名为Category):
Category
STD
CPL DEL
DLX
FAS
CJS SUP
COS
我需要针对表A运行查询,以便我的输出如下:
Details Category
STD RN STD
CPL DEL REV CPL DEL
DLX RN DLX
FAS REV FAS
CJS SUP REV CJS SUP
COS RN COS
表A和表B之间没有链接。有没有办法编写一个查询,它将查找表A的“详细信息”中的单词,如果它与表中“类别”列中的单词匹配B,那么它将输出表B的值?
答案 0 :(得分:1)
如果这些字词的顺序始终相同(不是DEL CPL
或CPL REV DEL
),这应该很简单:
DECLARE @Details TABLE(Detail VARCHAR(100));
INSERT INTO @Details VALUES
('STD RN')
,('CPL DEL REV')
,('DLX RN')
,('FAS REV')
,('CJS SUP REV')
,('COS RN');
DECLARE @Categories TABLE(Category VARCHAR(100));
INSERT INTO @Categories VALUES
('STD')
,('CPL DEL')
,('DLX')
,('FAS')
,('CJS SUP')
,('COS');
SELECT d.Detail
,c.Category
FROM @Details AS d
INNER JOIN @Categories AS c ON d.Detail LIKE c.Category + '%'
这会将所有详细信息与(所有)类别(具有相同的开头)组合在一起。
结果
Detail Category
STD RN STD
CPL DEL REV CPL DEL
DLX RN DLX
FAS REV FAS
CJS SUP REV CJS SUP
COS RN COS
但说实话:你真正应该做的就是改变设计!