我想創建一個動態查詢,根據錯誤代碼選擇一個特定的列。動態添加列查詢
,比如我有一個錯誤表(ErrorTable),其中包含多個列:
Transaction Number
Transaction Amount
Transaction Date
Error Code
Error Description
+100 other columns
錯誤表
Error Code
Error Description
Error Column
我想獲得一個查詢,會得到如下:
ErrorCode
ErrorDescription
ErrorColumn (Column Based On Error Code)
我嘗試使用如下的動態SQL,仍然只有c的名稱olumn回來了,也許我做錯了什麼?
DECLARE @SQL VarChar(1000)
SELECT @SQL = 'SELECT et.ErrorCode, et.ErrorDescription, e.ErrorColumn
FROM ErrorTable et
INNER JOIN Errors e ON e.ErrorCodeID = et.ErrorCode'
Exec (@SQL)
如果我使用@ErrorColumn =代替e.ErrorColumn「TransactionDate」的動態查詢我得到的結果,但與上面的查詢我不知道。有任何想法嗎?
更新2
我得到上面的查詢結果如下:
ErrorCode ErrorDesc TransactionDate TransactionAmount
1 Invalid Trans Date TransactionDate TransactionAmount
2 Invalid Trans Amount TransactionDate TransactionAmount
我想以下幾點:
ErrorCode ErrorDesc TransactionDate TransactionAmount
1 Invalid Trans Date May 1st
2 Invalid Trans Amount 65 Cats
您的示例select語句無效。您選擇沒有別名錶前綴的ErrorCode。哪個表是從哪裏來的? – VenerableAgents
如果我正在閱讀此權限,那麼您的列名稱存儲在Errors.ErrorColumn中,並且您希望錯誤類型確定選擇了哪一列。如果錯誤類型的數量不是很大,請考慮編寫一個CASE語句。否則,你將不得不使用動態SQL。 – SQLCurious
它給你什麼錯誤? – ganders