Синтаксис SQL-запроса в СЛУЧАЕ КОГДА-ЛИБО КОНЕЦ для подсчета - PullRequest
0 голосов
/ 13 декабря 2018

Написание запроса для определения количества посещений ЭД, которые были выписаны из единиц без ЭД.В столбце dep.ADT_UNIT_TYPE_C хранится 1, если единица была единицей ED.Предположим, что значения NULL не являются единицами ED для целей этого запроса.Что из следующего дает это число?

Я думаю, что это А, потому что, на мой взгляд, это звучит правильный синтаксис.COUNT (СЛУЧАЙ, КОГДА ЭТО ИЛИ КОНЕЦ стандартного формата) A имеет это.B не имеет ТОГДА?так это неверный синтаксис?Пожалуйста, помогите мне понять нюансы между этими вариантами.

A.)

COUNT( CASE WHEN dep.ADT_UNIT_TYPE_C is NULL  OR dep.ADT_UNIT_TYPE_C <> 1 THEN NULL 
            ELSE 1 
            END )

B.)

COUNT( CASE WHEN dep.ADT_UNIT_TYPE_C is NULL or dep.ADT_UNIT_TYPE_C <> 1 
            ELSE NULL 
            END)

C.)

CASE WHEN dep.ADT_UNIT_TYPE_C Is NULL or dep.ADT_UNIT_TYPE_C <> 1 THEN COUNT (NULL) 
     ELSE COUNT (1) 
     END

Д.)

CASE WHEN dep.ADT_UNIT_TYPE_C is NULL or dep.ADT_UNIT_TYPE_C <> 1 THEN COUNT(1) 
     ELSE COUNT(NULL) 
     END

1 Ответ

0 голосов
/ 13 декабря 2018

Вы можете сосчитать записи, которые возвращены COUNT (*) и поместить условие в предложение where.

Если вы используете Oracle, вы можете использовать NVL.Пример ниже для Oracle, но если вы используете mysql или SQL-сервер, вы можете использовать функцию ISNULL.

SELECT COUNT(*) FROM dep WHERE NVL(ADT_UNIT_TYPE_C, 0) != 1

Похоже, однако, что вы присоединяете это к другой таблице,вероятно, стол для посещения.Итак, вы хотите считать визиты.Visits, вероятно, хранит какой-то идентификатор отдела или способ присоединить его к отделам.

Примерно так:

SELECT COUNT(*) FROM visit v, departments d WHERE v.dep_id = d.dep_id AND NVL(d.ADT_UNIT_TYPE_C, 0) !=1

Если вы хотите, чтобы весь список, как показано выше, вы хотите использоватьгруппа по.Это покажет вам количество для каждого посещения по типу отдела.

SELECT COUNT(*) FROM visit v, departments d GROUP BY d.ADT_UNIT_TYPE_C
...