通过WHERE条件将SELECT分成多个列,而不会因添加到GROUP BY而导致多行创建


逆转的风
2025-03-18 02:21:58 (6天前)


当trs_trust_code为1或2时,我试图将SUM(trs_amt)和SELECT分成’trs_sum’列,当trs_trust_code = 9时,我将其分为’兴趣’列。我似乎无法弄清楚如何做…

2 条回复
  1. 0# 满目山河 | 2019-08-31 10-32



    请使用表达式

    当trs_trust_code = 9然后trs_amt else 0结束时的情况

    总之。例如这样:




    1. SELECT
      trs_desk,
      dsk_name,
      DATEPART( YEAR, DATEADD( DAY, trs_trx_date, 1600-12-31 ) ) as year’,
      DATEPART( MONTH, DATEADD( DAY, trs_trx_date, 1600-12-31 ) ) as month’,
      COUNT( DISTINCT trs_amt ) AS trs_count’,
      SUM( case when trs_trust_code = 1 or trs_trust_code = 2 then trs_amt else 0 end ) AS trs_sum’,
      SUM( case when trs_trust_code = 9 then trs_amt else 0 end ) AS interest’,
      SUM( trs_comm_amt ) AS trs_comm_sum
      FROM cds.trs
      JOIN cds.dsk on dsk_code = trs_desk
      WHERE trs_desk IN ( ACE )
      AND trs_trust_code IN (‘1’,’2’,’9’)
      GROUP BY trs_desk, year, month, dsk_name
      ORDER BY trs_desk ASC, year DESC, month DESC

    2. </code>

登录 后才能参与评论