0
我有兩個表 - tblColName和tblData是否有查詢選擇名稱存儲在另一個表中的列?
tblColNames具有我想要選擇的tblData列的名稱列表。
tblColNames
-----------
Var1
Var2
Var8
Var9
我只想從tblData中選擇其名稱存在於tblColNames中的列。
是否有Teradata SQL查詢來執行此操作?
我有兩個表 - tblColName和tblData是否有查詢選擇名稱存儲在另一個表中的列?
tblColNames具有我想要選擇的tblData列的名稱列表。
tblColNames
-----------
Var1
Var2
Var8
Var9
我只想從tblData中選擇其名稱存在於tblColNames中的列。
是否有Teradata SQL查詢來執行此操作?
對於此任務,您必須使用動態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語句,然後通過PREPARE
和OPEN
遊標命令調用該語句。
因此,您會看到屏幕上打印的指定列和表的條目。
這是一個基本的'JOIN'或'WHERE myColumnWithName IN(SELECT ...)'查詢。你嘗試過什麼嗎? – 2014-10-20 09:12:06
@PanagiotisKanavos我讀的意思是'select var1,var2,var8,var9 from tblData',其中列表var1-9是動態生成的,它不是'JOIN'或'WHERE' AFAICS。 – Rup 2014-10-20 09:14:57
@Rup是的,這就是我的意思。不是JOIN。 – 2014-10-20 09:22:37