Составление нескольких запросов даты и строки SQL - PullRequest
0 голосов
/ 19 февраля 2019

Я ищу, чтобы очистить мой код.Следующий код работает, как и ожидалось, но я не могу понять, как вы складываете запрос даты, подобный инцидентному типу, который использует запрос IN.Кажется, что так много кода, чтобы сделать то же самое, только с другим набором дат.Я знаю, что это будет что-то делать со скобками и запятыми, но я пытался и пытался без удачи.Вот мой рабочий код:

SELECT * FROM sa_incidents 
WHERE
    (incidentDate BETWEEN '2019-01-01' AND '2019-12-31' )
    AND
    incidentType 
    IN (
        'RIDDOR - Dangerous Occurrence',
        'RIDDOR - Public',
        'Non RIDDOR - Near Miss',
        'Non RIDDOR - Minor Injury'
    )
    OR (incidentDate  BETWEEN '2017-01-01' AND '2017-12-31')
    AND
    incidentType 
    IN (
        'RIDDOR - Dangerous Occurrence',
        'RIDDOR - Public',
        'Non RIDDOR - Near Miss',
        'Non RIDDOR - Minor Injury'
    )
    OR 
    (incidentDate BETWEEN '2016-01-01' AND '2016-12-31' )
    AND
    incidentType 
    IN (
        'RIDDOR - Dangerous Occurrence',
        'RIDDOR - Public',
        'Non RIDDOR - Near Miss',
        'Non RIDDOR - Minor Injury'
    )

1 Ответ

0 голосов
/ 19 февраля 2019

Если вы просто хотите уменьшить ненужное кодирование, это будет сделано

SELECT * FROM sa_incidents 
WHERE (
            incidentDate BETWEEN '2019-01-01' AND '2019-12-31'
        OR  incidentDate  BETWEEN '2017-01-01' AND '2017-12-31'
        OR  incidentDate BETWEEN '2016-01-01' AND '2016-12-31'
        )
AND incidentType IN (
                        'RIDDOR - Dangerous Occurrence',
                        'RIDDOR - Public',
                        'Non RIDDOR - Near Miss',
                        'Non RIDDOR - Minor Injury'
                    )
ORDER BY <something like the data probably>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...