2014-09-04 41 views
1

我有一个表NVPairs如下格式特定值

create table NVPairs(
    ID int IDENTITY(1,1) NOT NULL, 
    Param_ID int NOT NULL, 
    Name varchar(32) NOT NULL, 
    Value sql_variant NULL 
) 

PARAM_ID Name Value 
1  n1 foo 
1  n2 123.123456789 

我有给

<Param> 
    <Name>n1</Name> 
    <Value>foo</Value> 
    <Name>n2</Name> 
    <Value>123.123456789</Value> 
</Param> 

现有查询

SELECT Name, Value 
FROM NVPairs 
WHERE Param_ID = 1 
FOR XML PATH('Param'), TYPE 

是否有人知道或如何如果名称符合特定条件,我可以在值上执行格式化函数(如ROUND())。例如如果Name ='n2'则ROUND(值,7)?

结果将成为

PARAM_ID Name Value 
1  n1 foo 
1  n2 123.123456800 

回答

0

你的SELECT子句中使用CASE statement。你的选择会读像

SELECT 
    Name, 
    CASE WHEN Name='n2' THEN ROUND(Value,7) ELSE Value END AS Value 
... 

编辑:你可能会不得不做一些铸造能够ROUND之前,从SQL_VARIANT到十进制或FLOAT投放,投/转换回来。

+0

工程就像一个魅力!非常感谢。 – 2014-09-04 11:30:49