У меня возникла проблема с попыткой написать некоторый SQL для MS Access, который будет анализировать некоторые данные так, как я надеялся. Хотя я, по общему признанию, новичок (или все еще учился за пределами класса колледжа, который я взял пять лет назад) в отношении SQL, я бы хотел подумать, что я могу сделать.Access SQL Conditional Clause Несколько условий/записей в одном столбце
Сценарий: Хотя я, возможно, не начинал все это эффективно для начала, я начал с двух таблиц. Первоначальный набор данных начинался с чуть менее 72 тыс. Записей.
Цель, или то, что я пытался выполнить в случае, заключалась в том, чтобы найти все записи, в которых кто-то появлялся более чем на один заряд, а результат за заряд, который определяется как имеющий 0 очков, виновен, однако другие заряды обнаруживаются либо НГ, либо Уволены.
Вот что у меня есть. Эти данные я начал с двух таблиц, в которых содержались видимости, в которых были коды и точки.
Пример для выступлений будет похоже на следующее:
APP DATE CHARGE OUTCOME
===================================
1 1/1/2014 137 GT
2 1/5/2014 122 GT
2 1/5/2014 123 DI
3 1/6/2014 257 DI
3 1/6/2014 257 DI
4 1/6/2014 137 NG
4 1/6/2014 123 DI
4 1/6/2014 122 GT
я имел вторую таблицу, которая связана с зарядом, на потенциальное количество точек, связанных с зарядом, достаточно простого форматирования там
CHARGE POINT
===============
122 0
123 2
137 2
257 0
Таким образом, я создал несколько базовых запросов, так как я в основном заполняю пробелы на основе массива файлов данных, которые были предоставлены мне. Первый один вытащил присоединился первые две таблицы вместе, так что я остался с таблицей, смотрел что-то вдоль линий:
APP DATE CHARGE OUTCOME POINTS
==========================================
1 1/1/2014 137 GT 2
2 1/5/2014 122 GT 0
2 1/5/2014 123 DI 2
3 1/6/2014 257 DI 0
3 1/6/2014 257 DI 0
4 1/6/2014 137 NG 2
4 1/6/2014 123 DI 2
4 1/6/2014 122 GT 0
Затем я создал три небольших запросов, которые были каждый попросили произвести подмножество данных из основной запрос, один для OUTCOME = GT, Points = 0, другой для Outcome = NG, Points> 2, последний Outcome = DI, Points> 2. Каждый из запросов был вызван в запросе make-таблицы, который привел запись, установленную с исходного 72k до 39k. Применяя еще один запрос с
Select * from record_set Where RecordID IN
(Select RecordID from record_Set
GROUP BY RecordID
HAVING COUNT (*) > 1))
на конце принесли общее количество всего до 21k.
Моя проблема заключается в следующем: Набор данных, который я хотел бы вернуть, должен дополнительно фильтровать результаты. В настоящее время я не понял, как отсеять значения APP, где оба значения равны 0. Для всех, кого я знаю, я должен был подойти к этому совершенно по-другому.
EDIT: То, что я искал бы это набор данных, который возвращается выглядеть примерно так:
APP DATE CHARGE OUTCOME POINTS
==========================================
2 1/5/2014 122 GT 0
2 1/5/2014 123 DI 2
4 1/6/2014 137 NG 2
4 1/6/2014 123 DI 2
4 1/6/2014 122 GT 0
Если одна запись вытянутую и APP, где РЕЗУЛЬТАТ был DI/0 для всех связанные с этим расходы.
Текущие попытки, которые я попытался использовать прямое предложение WHERE, оценивают только одно значение записи. Наверное, я ищу способ оценить и то, и другое. Может быть, было бы проще, если бы я написал значение для разделения временных таблиц, а затем сделал объединение только для значений APP, появившихся в обеих таблицах?
Любая помощь или руководство будет принята с благодарностью!
Простите, я очистил свой вопрос, чтобы быть немного яснее. То, что я пытаюсь сделать, - это отсеять все случаи, когда говорят, что запись содержит значения точек, которые были только 0. Поэтому, если у кого-то было 5 записей, мне нужно иметь возможность сравнивать их с собой. – dramerus
Единственная мысль, которую мне пришлось решить до сих пор, заключалась в следующем: отделите комбинации зарядов/приложений, которые имеют точки от тех, которые этого не делают. Создайте список только применимого APP, а затем сравните его между двумя таблицами. Если кто-то не появится в обоих, то он не будет включен ... может быть? мысли? – dramerus
Я все еще немного смущен - тестирование моего предложения с помощью вашей логики оставит вас с запрошенным вами результатом. http://sqlfiddle.com/#!9/97c0c/3 –