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结束”。谢谢很容易!