我有表B,它将具有ParameterCode和Value的行。
我有一个表A,它将包含不同变量的列。
我希望将A的列名与B中的ParameterCode值相匹配。
如果B.ParameterCode(row)匹配A中的列名(在本例中为origin),我想返回它。
基本上,如何从行值中查找和匹配列名?
我确信我只是忘记了一些非常简单的事情。
表B示例:
DECLARE @B TABLE(ParameterCode VARCHAR(64), Value varchar(64))
INSERT @B VALUES ('Origin','SLC')
表A示例
DECLARE @A TABLE(
Origin varchar(100),
Destination VARCHAR(100),
Passengers int
)
insert into @A values
('SLC','JFK','1')
只会选择原点。
结果
DECLARE @Result TABLE(
Origin varchar(100),
)
insert into @Result values
('SLC')
答案 0 :(得分:1)
您需要先取消@A
表格,然后在JOIN
上@B
进行操作:
;WITH CteValues AS(
SELECT x.* , a.Passengers
FROM @A a
CROSS APPLY (VALUES
('Origin', Origin),
('Destination', Destination)
)x(ParameterCode, ParameterValue)
)
SELECT cv.ParameterValue, cv.Passengers
FROM CteValues cv
INNER JOIN @B b
ON b.ParameterCode = cv.ParameterCode
AND b.Value = cv.ParameterValue