hav*_*end 1 html xml t-sql sql-server colors
我已经使用了这种方法,但是现在我必须根据值使用一些颜色。因此,我在表中有以下信息:
Material | Q1 | Q2
---------+----+-----
M1 | 10 | 5
M2 | 3 | 10
M3 | 15 | 15
Run Code Online (Sandbox Code Playgroud)
当Q1低于Q2时,我想将红色着色,当蓝色和黄色较高时,我将其着色为相同值。
CREATE TABLE #tempo
(
q1 INT, q2 INT, name VARCHAR(10)
)
INSERT INTO #tempo (q1, q2, name)
VALUES (10, 5, 'low'), (10, 10, 'same'), (10, 20, 'high')
--SELECT * FROM #tempo
DECLARE @html varchar(MAX)
SET @html = '<table id="tablaPrincipal" border=0>
<tr style="background:#a7bfde;font-weight:bold;">
<td>q1</td>
<td>q2</td>
<td>Compare</td>
</tr>'+
(
SELECT
isnull(q1,0) AS td
,' ' , isnull(q2,0) AS td
,' ' , name AS td
FROM #tempo
FOR XML PATH('tr')
)
+'</TABLE>'
SELECT @html
DROP TABLE #tempo
Run Code Online (Sandbox Code Playgroud)
我试图将td与另一个标签tdx一起使用,并替换为:SET @html = REPLACE(@html,``,'')
但是,可以根据值动态更改别名吗?
谢谢!
这是另一种选择。不清楚是否只需要突出显示一个单元格
编辑-更新了3种颜色
例
DECLARE @html varchar(MAX)
SET @html = '<table id="tablaPrincipal" border=0>
<tr style="background:#a7bfde;font-weight:bold;">
<td>q1</td>
<td>q2</td>
<td>Compare</td>
</tr>'+
(
SELECT [td/@style] = 'background:'+choose(sign(q1-q2)+2,'blue;color:white;','yellow','red')
,[td] = isnull(q1,0)
,null
,[td/@style] = 'background:'+choose(sign(q1-q2)+2,'blue;color:white;','yellow','red')
,[td] = isnull(q2,0)
,null
,[td/@style] = 'background:'+choose(sign(q1-q2)+2,'blue;color:white;','yellow','red')
,[td] = name
FROM #tempo
FOR XML PATH('tr')
)
+'</TABLE>'
SELECT @html
Run Code Online (Sandbox Code Playgroud)
退货