Mysql 如果项目没有';t序列号,如果有序列号,则设置1

Mysql 如果项目没有';t序列号,如果有序列号,则设置1,mysql,sql,Mysql,Sql,我有桌上发票 invoice_id good_id serial_number count 并希望以以下方式获取股票报告: good_id serial_number count 所以,若货物有序列号,则计数应为1,否则计数应为发票中所有计数的总和 invoice_id good_id serial_number count 1 1 123 1 1 2 456 1 1

我有桌上发票

invoice_id
good_id
serial_number
count
并希望以以下方式获取股票报告:

good_id
serial_number
count
所以,若货物有序列号,则计数应为1,否则计数应为发票中所有计数的总和

invoice_id good_id serial_number  count
1           1       123           1
1           2       456           1
1           3                     2
2           1       789
2           2       012
2           3                      3
输出

good_id serial_number count
1       123            1
1       789            1  
2       456            1
2       012            1
3                      5
在以下情况下使用SUM和CASE

SELECT good_id, serial_number, SUM(CASE WHEN serial_number IS NULL THEN count ELSE 1 END)
FROM invoice
GROUP BY good_id, serial_number
你可以试试

SELECT good_id, serial_number, (CASE WHEN serial_number IS NULL THEN SUM(count) ELSE 1 END) as sum_count
FROM invoice
GROUP BY good_id, serial_number
请试试这个

SELECT 
    DISTINCT 
    good_id,
    serial_number,
    CASE WHEN ISNULL(A.Serial_Number,'') ='' 
    THEN
        (Select SUM(Count) from invoice  WHERE ISNULL(Serial_Number,'') ='' AND  good_id=A.good_id group by good_id) 
    ELSE 1 END As count
FROM invoice  AS A

向我们展示一些示例表数据和预期结果。(格式化文本,无图像)能否添加样本数据和预期输出?是的,成功了。只应为“序列号为空时的情况,然后计数1结束”。谢谢很容易!