根据列值将类添加到FOR XML PATH

时间:2019-01-22 22:03:18

标签: sql sql-server xml case

我正在构建一个要插入电子邮件的html表。我需要它,以便能够直接用完sql。我到目前为止所拥有的是...。

SELECT col1 AS 'td','',
    col2 AS 'td','',
    col3 AS 'td','',
    col4 AS 'td'
FROM TABLE
FOR XML PATH('tr'),ELEMENTS AS NVARCHAR(MAX)

我想向该行添加一个类,以便我可以根据问col3的值来控制整个行的字体。

我来自编程界,所以我不熟悉以下等效的sql ... 伪代码:

SELECT col1 AS 'td','',
    col2 AS 'td','',
    col3 AS 'td','',
    col4 AS 'td'
FROM TABLE
if col3 == 'fail' then FOR XML PATH('tr class=red'),ELEMENTS AS NVARCHAR(MAX)
else if col3 == 'warn' then XML PATH('tr class=yellow'),ELEMENTS AS NVARCHAR(MAX)
else FOR XML PATH('tr'),ELEMENTS AS NVARCHAR(MAX)

1 个答案:

答案 0 :(得分:0)

使用子查询来构建行单元格作为行的内容,并使用CASE为行的class属性分配不同的值。

SELECT CASE col4
          WHEN 'fail' THEN
            'red'
          WHEN 'warn' THEN
            'yellow'
          ELSE
            'green'
        END 'tr/@class',
        (SELECT col1 'td',
               '',
               col2 'td',
               '',
               col3 'td',
               '',
               col4 'td'
               FOR XML PATH(''),
                       TYPE) 'tr'
        FROM elbat
        FOR XML PATH('table');

db<>fiddle