数码生活指南
霓虹主题四 · 更硬核的阅读氛围

SQL查询行转列:让老人健康数据更清晰

发布时间:2025-12-09 14:42:40 阅读:344 次

在老人护理工作中,每天都要记录不少数据,比如血压、血糖、服药情况。这些信息通常按时间一条条存进系统,看起来挺清楚,可一旦要汇总某位老人一周的血糖变化,密密麻麻的行记录就让人头疼。

为什么需要行转列?

假设数据库里有这样一张表,记录了张奶奶三天的血糖值:

日期          项目      数值
2024-05-01   空腹血糖  6.2
2024-05-01   餐后血糖  8.1
2024-05-02   空腹血糖  5.9
2024-05-02   餐后血糖  7.8
2024-05-03   空腹血糖  6.4
2024-05-03   餐后血糖  8.3

如果想让每一天的数据横着排,把“项目”变成列名,查起来就直观多了。

用CASE WHEN实现简单行转列

SQL中,可以用CASE WHEN配合聚合函数来完成转换。语句像这样:

SELECT
  日期,
  MAX(CASE WHEN 项目 = '空腹血糖' THEN 数值 END) AS 空腹血糖,
  MAX(CASE WHEN 项目 = '餐后血糖' THEN 数值 END) AS 餐后血糖
FROM health_data
WHERE 姓名 = '张奶奶'
GROUP BY 日期
ORDER BY 日期;

执行后,结果会变成:

日期          空腹血糖   餐后血糖
2024-05-01  6.2  8.1
2024-05-02  5.9  7.8
2024-05-03  6.4  8.3

这样一排,哪天数值偏高一眼就能看出来,给家属汇报也方便。

动态列处理小技巧

如果项目种类多,比如还加了“睡前血糖”“运动后血糖”,写死条件就麻烦了。有些数据库如MySQL支持GROUP_CONCAT拼接SQL,可以先查出所有项目,再动态生成查询语句。虽然操作复杂点,但一次配置好,以后直接运行就行。

实际应用场景

社区养老中心每月要出一份健康简报,把每位老人的关键指标整理成表格。以前靠手工复制粘贴,容易出错。现在用行转列脚本自动提取数据,导出Excel,省时又准确。护士小李说:“以前花半天做的事,现在十分钟搞定,多出来的时间能陪老人聊聊天。”

技术不一定要高大上,能解决日常问题才是关键。一个小小的SQL变换,让护理工作少点繁琐,多点温度。