0
我有4个表A,B,C和X动态SQL查询
X表:
Icid Trade_Id Counter_Party
---------------------------------
1 101 HDFC1
2 102 HDFC1
3 103 HDFC2
4 104 HDFC2
5 105 HDFC2
6 106 HDFC3
7 107 HDFC4
8 108 HDFC4
9 109 HDFC5
10 110 HDFC5
甲表:
Icid Trade_Id Name
----------------------------------
1 110 HDFC Bank Pvt Ltd
2 105 HDFC Bank Pvt Ltd
3 101 HDFC Bank Pvt Ltd
4 102 HDFC Bank Pvt Ltd
B表:
Icid Trade_Id Name
----------------------------------------
1 103 HSBC Pvt Ltd
2 104 HSBC Pvt Ltd
3 106 HSBC Pvt Ltd
Ç表:
Icid Trade_Id Name
--------------------------------------
1 107 HK Pvt Ltd
2 108 HK Pvt Ltd
3 109 HK Pvt Ltd
A,B,C表这样,我已创建的另一个表,并存储表如下名称。
Findtbl表:
Icid Table_name
------------------
2 A
3 B
4 C
我需要表XTrade_ID
找到表A,B和C.如果表A中,然后打印位置列INDIA
,如果表B中发现然后打印位置列USA
,如果在表C中找到,那么位置列在表#Temp
位置,Trade_Id,名称列Hongkong
:
#TEMP表:
Icid location Trade_Id Name
我尝试这样做:
Declare @Fst_value nvarchar(100)
Declare @Counter INT
Declare @tablename nvarchar(20)
Declare @sql nvarchar(max)
Declare @isvalue int
Declare @loop int = 1
Declare @sqlsecond nvarchar(max)
Declare @sqlthird nvarchar(max)
SET @Fst_value = '104'
SET @Counter = (Select COUNT(Icid) From Findtbl)
WHILE @Loop < = @Counter
BEGIN
SET @tablename = (SELECT Table_name
FROM Findtbl
WHERE Icid = @Loop)
SET @sql = 'Select @isvalue = Icid,@sqlsecond = Trade_Id,@sqlthird = Name From '[email protected]+' Where Trade_Id = '[email protected]_value+''
Execute sp_executesql @sql,N'@isvalue int OUTPUT,@sqlsecond nvarchar OUTPUT,@sqlthird nvarchar OUTPUT',@isvalue = @isvalue OUT,@sqlsecond = @sqlsecond OUT,@sqlthird = @sqlthird OUT
if(@isvalue <> 0)
begin
Select @sql
break
end
SET @isvalue = 0
SET @Loop = @Loop + 1
END
该代码包含在存储的过程。