#sql #cognos
Вопрос:
Я создаю отчет в IBM Cognos report studio.
Набор данных выглядит следующим образом: включая название местоположения, название товара , номер товара и дни в инвентаре.
id date type hours 1 10/27/2021 work 7 1 10/27/2021 overtime 1 1 10/24/2021 work 7 1 10/26/2021 work 7
Я использую total для суммирования часов за одну и ту же дату
total ([Hours] for [Date],[ID])
Он возвращается:
id date type hours 1 10/27/2021 work 8 1 10/27/2021 overtime 8 1 10/24/2021 work 7 1 10/26/2021 work 7
Затем я попробовал сосчитать и подсчитать. затем установите в фильтре значение count = 1. Установите агрегат объектов после. Возврат данных:
id date type hours count 1 10/27/2021 work 1 1 1 10/27/2021 overtime 1 2 1 10/24/2021 work 1 1 1 10/26/2021 work 1 1
что мне нужно:
id date type hours 1 10/27/2021 work 8 1 10/24/2021 work 7 1 10/26/2021 work 7
Спасибо за вашу помощь!
Комментарии:
1. Так в чем же вопрос?
2. Я отредактировал вопрос. Что мне нужно, так это общий рабочий час на ту же дату. Но когда я применил фильтр подсчета, функция total не будет работать.
3. Можете ли вы объяснить фильтр подсчета? Было ли это сделано для контроля количества возвращаемых строк? Например, вы хотите видеть 1 строку на дату И хотите включить часы всех типов … если это так, введите colum вводит в заблуждение, и вы, возможно, захотите удалить его (поскольку он будет включать часы работы и сверхурочную работу).
4. Несколько вещей. Во-первых, 27 октября id 1 не выполнил 8 часов типовой работы. ID 1 выполнил 7 часов типовой работы и 1 час типовой сверхурочной работы. Я не знаю, почему вы хотели бы, чтобы часы были равны 8, но все равно имели столбец типа в проекции. Я не уверен, какова связь между вашим первым запросом и вашими подсчетами и текущими подсчетами. Я не понимаю связи между ними и таблицей того, что вам нужно.
5. Вы понимаете, почему ваше выражение возвращает 8 часов как для рабочих, так и для сверхурочных типов 27 октября в вашем первом запросе? Он делает именно то, о чем вы его просили.
Ответ №1:
Требование все еще немного неясно, но, если я правильно понимаю, для запроса нужны эти элементы данных:
Имя | Выражение | Агрегация |
---|---|---|
ID | [удостоверение личности] | Нет |
Дата | [дата] | Нет |
Тип | «работа» | Нет |
часы | [часов] | Весь |
Затем добавьте фильтр с этим выражением:
[type] in ('work', 'overtime')
Включите любые значения для [типа], которые вы считаете «рабочими».
В качестве альтернативы, поскольку ваши комментарии указывают на то, что ваш образец ввода и желаемый вывод являются неполными…
Имя | Выражение | Агрегация |
---|---|---|
ID | [удостоверение личности] | Нет |
Дата | [дата] | Нет |
Тип | случай, когда [введите] в («работа», «сверхурочная работа»), затем «работа» еще [введите] конец | Нет |
часы | [часов] | Весь |
…без фильтра.