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

如何避免SQL查询生成不必要的多余列?

解决方案

你当前的问题根源是按generation分组后,每行仅对应一个代际,其他代际的列自然无数据。以下两种方式可以解决多余列的问题:

方式1:生成单行汇总结果(所有代际总时间在同一行)

如果需要把所有代际的总出行时间放在一行展示,直接去掉GROUP BY generation即可,这样会对全表聚合,每个列对应对应代际的总时间,不会出现空值:

SELECT
    SUM(CASE WHEN generation = 'Millennials' THEN Rental_Duration_seconds ELSE 0 END) AS MillennialTT,
    SUM(CASE WHEN generation = 'Generation Z' THEN Rental_Duration_seconds ELSE 0 END) AS GenZTT,
    SUM(CASE WHEN generation = 'Generation X' THEN Rental_Duration_seconds ELSE 0 END) AS GenXTT,
    SUM(CASE WHEN generation = 'Baby Boomers' THEN Rental_Duration_seconds ELSE 0 END) AS BBYBoomerTT,
    SUM(CASE WHEN generation = 'Silent Generation' THEN Rental_Duration_seconds ELSE 0 END) AS SilentGenTT
FROM
    dbo.2019_Q2_Trips;

方式2:行式展示(仅保留必要的两列)

如果不需要横向展开列,而是以行的形式展示每个代际的总时间,只需保留generation和对应总时间两列即可,完全避免多余列:

SELECT
    generation,
    SUM(Rental_Duration_seconds) AS TotalTripTime
FROM
    dbo.2019_Q2_Trips
GROUP BY
    generation;

说明

  • 方式1适合需要横向对比所有代际数据的场景,结果是一行多列,无空值。
  • 方式2是更简洁的聚合写法,结果是每行对应一个代际,仅包含代际名称和总时间,没有冗余列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 01:17:08