У меня возникли проблемы со сводными таблицами в oracle. У меня есть рабочий пример, который подсчитывает количество элементов инвентаря. Существует два типа счетчиков, но я учитываю только один тип. Мне нужно изменить свой пример, чтобы включить два типа счетчиков и поддерживать данные «в строке» друг с другом (если это имеет смысл). Я попытаюсь изо всех сил объяснить. Рассмотрим следующий запрос:Oracle SQL-запрос с функцией Pivot и агрегата
select *
from (select state_code, city_code, equipment_type, sum(AVAILABLE_COUNT) as available_count
from EQUIP_VIEW_TABLE
group by state_code, city_code, equipment_type
)
pivot (max(available_count)
for (equipment_type) in
('Sandbag' "CNT_SANDBAG",
'Gabion Basket' "CNT_GABION_BASKET",
'Rapid Deployment Floodwall' "CNT_RAPID_DEPLOYMENT_FLOODWALL",
'Portable Coffer Dam' "CNT_PORTABLE_COFFER_DAM",
'Polyethylene Sheeting' "CNT_POLYETHYLENE_SHEETING",
'Pump' "CNT_PUMP"))
Теперь этот запрос хорошо подходит для одного типа счетчика («доступный счет»). Данные все на ту же строку, соответствующей государственный/город и никаких данных не дублируются, т.е.
STATE CITY SANDBAGS BASKETS FLOODWALL DAM SHEET PUMP
Texas Austin 12 45 11 16 89 8
мне нужно учитывать другой тип счета. Мне нужно учитывать «доступную длину счета» для определенных единиц оборудования. Я пытался сделать это с помощью следующего запроса:
SELECT *
FROM (SELECT unique state_code, city_code,
equipment_type AS equipment_type_cnt, equipment_type as equipment_type_len,
sum(AVAILABLE_COUNT) AS available_count, SUM(AVAILABLE_COUNT_LENGTH) AS available_count_length
FROM EQUIP_VIEW_TABLE
GROUP BY state_code, city_code, equipment_type )
pivot (MAX(available_count)
FOR (equipment_type_cnt) IN
('Sandbag' "CNT_SANDBAG",
'Polyethylene Sheeting' "CNT_POLYETHYLENE_SHEETING",
'Pump' "CNT_PUMP"))
pivot (MAX(available_count_length)
FOR (equipment_type_len) IN
('Gabion Basket' "CNT_GABION_BASKET",
'Rapid Deployment Floodwall' "CNT_RAPID_DEPLOYMENT_FLOODWALL",
'Portable Coffer Dam' "CNT_PORTABLE_COFFER_DAM"))
Я попытался добавить еще один раздел поворота в основном, и я думал, что это работает, но он дублирует значения и помещает их на разных строках. Набор результатов выглядит как
STATE CITY SANDBAGS SHEET PUMP BASKET FLOODWALL DAM
Texas Austin 12 89 8 16 - -
Texas Austin 12 89 8 - 11 -
Texas Austin 12 89 8 - - 16
Это дублирует строки в моем результирующем наборе. Мне нужны все эти значения в одной строке. Я пробовал разные идеи, но все равно получаю повторяющиеся значения. Любая помощь по этому вопросу будет принята с благодарностью. Заранее спасибо за вашу помощь. Я опубликую больше информации, если моя проблема слишком сложная или я недостаточно объяснил это. Благодарю.
, пожалуйста, настройте для этого скрипт sql. –
ok я посмотрю, что я могу сделать – user1898629