2014-10-20 56 views
0

我有兩個表 - tblColName和tblData是否有查詢選擇名稱存儲在另一個表中的列?

tblColNames具有我想要選擇的tblData列的名稱列表。

tblColNames 
----------- 
Var1 
Var2 
Var8 
Var9 

我只想從tblData中選擇其名稱存在於tblColNames中的列。

是否有Teradata SQL查詢來執行此操作?

+0

這是一個基本的'JOIN'或'WHERE myColumnWithName IN(SELECT ...)'查詢。你嘗試過什麼嗎? – 2014-10-20 09:12:06

+0

@PanagiotisKanavos我讀的意思是'select var1,var2,var8,var9 from tblData',其中列表var1-9是動態生成的,它不是'JOIN'或'WHERE' AFAICS。 – Rup 2014-10-20 09:14:57

+0

@Rup是的,這就是我的意思。不是JOIN。 – 2014-10-20 09:22:37

回答

2

對於此任務,您必須使用動態SQL。所需要的命令是在過程中被調用,基本如下所示(這是一個DB2例子,我曾經寫過,但原則應該是任何方言類似):

CREATE OR REPLACE PROCEDURE DYNAMIC_TABLE_ACCESS 
(IN TableName VARCHAR(40), IN ColName VARCHAR(40)) 
DYNAMIC RESULT SETS 1 
READS SQL DATA 
LANGUAGE SQL 
SPECIFIC DYNAMIC_TABLE_ACCESS 
BEGIN 
     DECLARE V_DYNAMIC VARCHAR(200); 
     DECLARE V_SQL VARCHAR(200); 

     DECLARE V_CUR CURSOR WITH RETURN TO CALLER FOR V_DYNAMIC; 

     SET V_SQL='SELECT ' CONCAT ColName CONCAT ' AS ColName FROM ' CONCAT TableName; 

     PREPARE V_DYNAMIC FROM V_SQL; 
     OPEN V_CUR; 
END 

的想法是創建一個字符串V_SQL包含帶有動態選擇的列名和表名的SQL語句,然後通過PREPAREOPEN遊標命令調用該語句。

因此,您會看到屏幕上打印的指定列和表的條目。

相關問題