Установите сумму (количество), если элемент не имеет серийного номера, и установите 1, если есть - PullRequest
2 голосов
/ 16 мая 2019

У меня есть счет в таблице как

invoice_id
good_id
serial_number
count

и хотите получить отчет о запасе как:

good_id
serial_number
count

так, если товар имеет serial_number, то число должно быть 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

Ответы [ 3 ]

1 голос
/ 16 мая 2019

Используйте сумму с делом, когда

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
0 голосов
/ 16 мая 2019

Пожалуйста, попробуйте это.

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
0 голосов
/ 16 мая 2019

Вы можете попробовать

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...