仅当满足某些条件时,才如何选择特定列?
我有一个#Pricelist_1 temp
表。
如果Price_list ='MY1'
具有[Original Cost]
列,则此[Original cost]
列不存在。
仅在[Original cost]
时如何执行动态SQL来选择此Price_list='MY1'
?
尝试使用IIF,但不起作用。
IIF (a.Price_List='MY1',[Original Cost],'')
SQL将引发一个错误,当我使用[Original Cost]
运行时找不到列Price_list <> 'MY1'
SELECT
a.[Price_List],
a.[Price1],
a.[Price2],
a.[Price3],
IIF (a.Price_List='MY1',[Original Cost],'') --- If price_List='MY1' I want to select column [Original Cost] else I don't want to select this column.
INTO #A
FROM #Pricelist a (nolock)
LEFT JOIN #Premium p (nolock) ON a.[Product Group] = p.[Product Group] AND a.[Brand No] = p.[Brand No]
非常感谢您。
答案 0 :(得分:0)
您不需要动态SQL。您可以使用case语句。我认为,您可以从这里拿走它。
SELECT
a.[Price_List],
a.[Price1],
a.[Price2],
a.[Price3],
CASE WHEN a.price_List = 'MY1' THEN (SELECT TOP 1 [Original Cost] FROM #Pricelist WHERE.... (your filtering condition))
ELSE NULL END
INTO #A
FROM #Pricelist a (nolock)
LEFT JOIN #Premium p (nolock) ON a.[Product Group] = p.[Product Group] AND a.[Brand No] = p.[Brand No]