Dynamic SQL 会解决你的问题。
表架构:
CREATE TABLE TableA(ColA INT,ColB VARCHAR(20),ColC INT,ColE INT)
INSERT INTO dbo.TableA VALUES(1,'US',2,1)
INSERT INTO dbo.TableA VALUES(1,'US',4,2)
INSERT INTO dbo.TableA VALUES(2,'IND',3,6)
INSERT INTO dbo.TableA VALUES(2,'IND',1,5)
CREATE TABLE TableB(ColX INT,ColY VARCHAR(20),ColZ VARCHAR(20),ColV VARCHAR(20))
INSERT INTO dbo.TableB VALUES(1,'US','ColC*ColE','Table1')
INSERT INTO dbo.TableB VALUES(2,'US','ColC/ColE','Table1')
动态 SQL 查询:
DECLARE @query NVARCHAR(MAX)=''
SELECT @query = @query + '
UNION
SELECT A.ColA,
A.ColB,
A.ColC,
A.ColE,
B.ColZ AS ColF,
1.0*' +ColZ+ '
FROM TableA A
JOIN TableB B ON A.ColA = B.ColX
WHERE ColZ = ''' + ColZ + ''' '
FROM TableB;
SET @query = STUFF(@query,1,6,'');
--SELECT @query
--Print @query
EXEC (@query)
检查SQL Fiddle中的输出