You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL生成的HTML表格中高亮存在于另一表的行

修改方案实现行高亮与统一Group状态

核心思路

通过在SQL拼接HTML时动态为<tr>标签添加高亮样式,同时先确保同一Group的Status字段值统一,再生成最终的HTML表格。

具体实现步骤

1. 统一同一Group的Status值

如果原始数据中存在同一Group下Status不一致的情况,先通过CTE(公共表表达式)按业务规则统一状态(比如取该Group的最新状态):

WITH UnifiedGroups AS (
    SELECT 
        GroupID,
        -- 按业务规则统一Status,示例:取该Group最新更新记录的Status
        FIRST_VALUE(Status) OVER (PARTITION BY GroupID ORDER BY UpdateTime DESC) AS UnifiedStatus,
        -- 其他需要展示的业务字段
        ColumnA,
        ColumnB
    FROM YourSourceTable
)

2. 拼接HTML时动态添加高亮样式

在生成表格行标签时,用CASE语句判断当前GroupID是否存在于#GroupsProcessed表中,为符合条件的行添加内联样式:

SELECT 
    CONCAT(
        '<tr',
        CASE WHEN g.GroupID IN (SELECT GroupID FROM #GroupsProcessed) THEN ' style="background-color: #e6f7ff;"' ELSE '' END,
        '>',
        '<td>', g.GroupID, '</td>',
        '<td>', g.UnifiedStatus, '</td>',
        '<td>', g.ColumnA, '</td>',
        '<td>', g.ColumnB, '</td>',
        '</tr>'
    ) AS TableRow
FROM UnifiedGroups g

3. 完整HTML表格生成示例

如果需要生成包含表头的完整HTML结构,可参考以下代码:

DECLARE @AlertHTML NVARCHAR(MAX)

WITH UnifiedGroups AS (
    SELECT 
        GroupID,
        FIRST_VALUE(Status) OVER (PARTITION BY GroupID ORDER BY UpdateTime DESC) AS UnifiedStatus,
        ColumnA,
        ColumnB
    FROM YourSourceTable
)
SELECT @AlertHTML = CONCAT(
    '<html><body>',
    '<table border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse;">',
    '<thead><tr style="background-color: #f5f5f5;"><th>Group ID</th><th>Status</th><th>字段A</th><th>字段B</th></tr></thead>',
    '<tbody>',
    STRING_AGG(
        CONCAT(
            '<tr',
            CASE WHEN GroupID IN (SELECT GroupID FROM #GroupsProcessed) THEN ' style="background-color: #fff3cd;"' ELSE '' END,
            '>',
            '<td>', GroupID, '</td>',
            '<td>', UnifiedStatus, '</td>',
            '<td>', ColumnA, '</td>',
            '<td>', ColumnB, '</td>',
            '</tr>'
        ),
        ''
    ),
    '</tbody></table></body></html>'
)
FROM UnifiedGroups

-- 生成的HTML可直接用于告警发送
SELECT @AlertHTML AS FinalAlertHTML

关键优化说明

  • 样式自定义:可替换style属性值实现不同高亮效果,比如字体加粗+背景色:style="font-weight: bold; background-color: #ffeeba;"。
  • 性能优化:如果#GroupsProcessed数据量较大,建议用LEFT JOIN替代IN子查询,提升拼接效率:
    SELECT 
        CONCAT(
            '<tr',
            CASE WHEN p.GroupID IS NOT NULL THEN ' style="background-color: #e6f7ff;"' ELSE '' END,
            '>',
            '<td>', g.GroupID, '</td>',
            '<td>', g.UnifiedStatus, '</td>',
            '</tr>'
        ) AS TableRow
    FROM UnifiedGroups g
    LEFT JOIN #GroupsProcessed p ON g.GroupID = p.GroupID
    
  • 状态统一逻辑:若业务中同一Group的Status本就一致,可直接跳过CTE部分,使用原始Status字段。

内容的提问来源于stack exchange,提问作者Luna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 20:22:19