mysql中按行项目分组

mysql中按行项目分组,mysql,Mysql,我需要一列的结果在每一行上是不同的 以下是数据的显示方式: Ticketnumber Legnumber Commission 100 1 50 100 2 50 这就是我需要它出现的方式: Ticketnumber Legnumber Commission 100 1 100 100 2 0 因此,当legnumber=1时,我需要

我需要一列的结果在每一行上是不同的

以下是数据的显示方式:

Ticketnumber  Legnumber  Commission
100           1          50
100           2          50
这就是我需要它出现的方式:

Ticketnumber  Legnumber  Commission
100           1          100
100           2          0
因此,当legnumber=1时,我需要佣金按ticketnumber分组,但当legnumber>1时,佣金应为零。我试着写一份案情陈述书,但没有用。关于如何做到这一点有什么建议吗

使用分组依据和内部表格

SELECT TicketNumber, LegNumber, 
CASE WHEN LegNumber = 1 THEN 
(SELECT SUM(Commission)  
FROM MyTable WHERE TicketNumber = MT.TicketNumber 
GROUP BY TicketNumber) ELSE 0 END AS Commission 
FROM MyTable MT
FIDLE-

您可以使用Group By属性

SELECT Table1.TicketNumber, LegNumber
, CASE WHEN LegNumber = 1 THEN SUM(Table2.Commission) ELSE 0 END AS Commission 
FROM Table1 JOIN (SELECT TicketNumber, sum(commission) as commission
                  FROM table1
                  GROUP BY TicketNumber) table2
ON TABLE1.TICKETNUMBER = table2.ticketnumber
GROUP BY Table1.TicketNumber, LegNumber
ORDER BY Table1.TicketNumber, LegNumber
试试这个

 SELECT TicketNumber, LegNumber, 
 CASE WHEN LegNumber = 1 
      THEN (select SUM(Commission) from Table1  group by ticketnumber   ) 
      ELSE 0 END AS Commission 
 FROM Table1 GROUP BY TicketNumber, LegNumber

我将使用此解决方案:

SELECT
  t1.Ticketnumber,
  t1.Legnumber,
  CASE WHEN Legnumber=1 THEN t2.sum_commission ELSE 0 END Commission
FROM
  Table1 t1 INNER JOIN (
    SELECT Ticketnumber, SUM(Commission) sum_commission
    FROM Table1
    GROUP BY Ticketnumber
  ) t2
  USING (Ticketnumber)
ORDER BY 
  t1.Ticketnumber,
  t1.Legnumber

请参阅fiddle。

您好,请发布您迄今为止尝试过的sql查询!那笔钱不是用票号、LegNumber,而不仅仅是票号吗?你看到小提琴了吗?如果我只是按票号分组,那么我就不会得到第2条的行,我只得到一行票号100。