我想创建一个动态查询,根据错误代码选择一个特定的列。动态添加列查询
,比如我有一个错误表(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