我有以下执行语句,它创建一个表(使用另一个过程中的数据),将这些值插入临时表,添加图像列(因为它们不能被包括在该分组中),然后更新它基于从另一个临时表的标准(所得到的表中的字段被在SSRS报告中使用,所以需要保留所述图像数据类型):检查临时表中是否存在列总是在SQL Server中返回false
EXEC ('SELECT ' + @COL_TO_GROUP_BY + @COL_ADDITONAL + @sColVals + ' INTO
#RESULTS_TABLE from (' + @SQL_STATEMENT + ') A ' + @WHERE_CLAUSE + ' GROUP BY ' +
@COL_TO_GROUP_BY +
' ALTER TABLE #RESULTS_TABLE
ADD IMAGE_DATA IMAGE
IF EXISTS(SELECT * FROM tempdb.INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME =
''COLUMN_A'' and TABLE_NAME LIKE ''#RESULTS_TABLE%'')
BEGIN
UPDATE #RESULTS_TABLE
SET IMAGE_DATA = FILE_DATA
FROM #RESULTS_TABLE A, #IMAGE_TABLE B
WHERE A.COLUMN_A = B.COLUMN_A
END
SELECT * FROM #RESULTS_TABLE')
问题无论COLUMN_A是否存在,IMAGE_DATA的列始终为NULL。有没有其他方法可以将数据导入IMAGE_DATA列?请帮忙!
注意:我将而不是正在接受任何可以得出结论认为问题与其他表格中的内容相关的答案,更具体地说来自WHERE子句。我已经完成了多个验证,以确保条件可以是true和false(匹配行,不匹配行等)。所以这就排除了条件陈述。谢谢。
编辑:
我还没有完全知道是什么它的确切原因是,但我结束了创建一个全局临时表,跑两个不同的过程,现在看来是工作的罚款。我不得不接受与我自己的解决方案最匹配的答案。所有的答案和评论都非常可行。谢谢!
首先,我会试着省略'WHERE A.COLUMN_A = B.IMAGE_VALUE'这对我来说这足以通过'OBJ_ID'找到正确的行。 – 2011-06-13 16:38:46
谢谢你指出。在我的情况下,我需要有两个条件,因为有一些重复的OBJ_ID行。我简化了我的原始代码,应该把它看成是误导性的。我将编辑该问题。 – 2011-06-13 16:55:33
不知道这是否有帮助,但我认为你可以在你的SELECT语句中像这样将'image(null作为图像)添加为IMAGE_DATA',而不必将它添加到group by子句中,因为它是一个常量。顺便说一句,为什么你需要测试列是否存在? – 2011-06-13 17:53:08