我有像
这样的表格Ticker Sedol bbg identifier
t1 w2 null Ticker
t2 w3 null sedol
如果identfier是自动收报机,那么bbg将使用自动收报机列值更新并与sedol标识符相同。但是如果我在标识符列中插入新的标识符,那么它也应该适用于该标识符列。 如果我插入' occ'在标识符列中,应使用occ列值更新bbg列。 我将在插入标识符值后添加occ列。
我想要输出......
Ticker Sedol bbg identifier
t1 w2 t1 Ticker
t2 w3 w3 sedol
注意:查询应该是动态的
答案 0 :(得分:0)
我知道你要求动态,但这不会吗?
UPDATE TableName
SET bbg = CASE
WHEN identifier = 'Ticker'
THEN Ticker
WHEN identifier = 'Sedol'
THEN Sedol
WHEN identifier = 'occ'
THEN occ
END
动态版本:
DECLARE @SQL AS VARCHAR(MAX)
SET @SQL = 'UPDATE TableName
SET bbg = CASE ' +
STUFF
(
(
SELECT ' ' + 'WHEN identifier = ''' + c.name + ''' THEN ' + QUOTENAME(c.name)
FROM sys.columns c
JOIN sys.tables t
ON c.object_id = t.object_id
WHERE t.name = 'YourTableName'
AND c.name <> 'bbg'
FOR XML PATH('')
),
1,
0,
''
) + ' END'
EXEC (@SQL)
一个很好的 FIDDLER演示 来证明我的情况......