У меня есть таблица, которая может иметь один и тот же предмет, но с разными размерами, я хотел бы сосчитать эти предметы более чем одного размера (например, чудо-рубашка с размерами S, M будет считаться как «1»), но все равно будетмогу посчитать, сколько S и M. У меня есть 2 результата, которые я хотел бы получить.Пожалуйста, см. Ниже для получения более подробной информации.
TABLE B
ITEM_NO ITEM
=========================
3130C MARVEL_SHIRT
1845C SPONGEBOB_BOXERS
A900C CK_COAT
A988C RIDER_JEANS
TABLE C
ITEM_NO SIZE
===============
3130C S
3130C M
1845C M
A900C L
A988C M -
Я пытался просто подсчитать это, но это неверно, поскольку он подсчитывает, сколько различных размеров есть
select (case substr(item_no, 5, 1)
when 'C' then 'clothes'
when 'T' then 'toys'
else 'misc'
end) inv,
count(item_no) total
,sum (case when C.size = 'S' then 1 else 0 end) AS small
,sum (case when C.size = 'M' then 1 else 0 end) AS med
,sum (case when C.size = 'L' then 1 else 0 end) AS large
,count (distinct C.size) AS multiple_sizes
from B left outer join C on B.item_no = C.item_no
group by substr(item_no, 5, 1);
Фактический результат (неверный):
INV TOTAL Small Med Large Multiple_Sizes
==========================================================
CLOTHES 4 1 3 1 3
Желаемый / ожидаемый результат:
INV TOTAL Small Med Large Multiple_Sizes
==========================================================
CLOTHES 4 1 3 1 1
Ниже приведен еще один возможный желаемый результат с учетом этого сценария: что делать, если объекты с несколькими размерами не должны учитываться отдельно (т. Е. Рубашка Marvel имеет несколькоразмеры, таким образом, он не будет считать S или M, так как он уже считается в Multiple_Sizes)?
INV TOTAL Small Med Large Multiple_Sizes
==========================================================
CLOTHES 4 0 2 1 1