2015-09-11 2 views
0

Я не уверен, правильно задал вопрос в заголовке, но вот правильный сценарий.Как вы можете получить отсутствующие строки из таблицы SQL?

Предположим, что у меня есть таблица SQL, в которой строки вставляются каждый день. В этих строках есть один столбец, который имеет один набор значений. Это означает, что в этом столбце, назовем его Source_system, мы получаем 20 значений каждый день. Одни и те же различные значения каждый день. Теперь я могу получить имя исходной системы, которое не вставлено в этот день?

EDIT: Извините за плохой английский.

+0

показать нам определение таблицы, некоторые выборочные данные, и желаемый результат. – jarlh

+1

_Now есть ли способ получить имя исходной системы, которое не вставлено на этот день? _ Да. Использование внешнего соединения и список всех систем. Пример, предполагающий, что yourTableName имеет полный набор значений: 'Выберите ST.InsertedDay, B.Source_System из (выберите Distinct source_System из вашего TableName) B LEFT JOIN yourTableName ST на B.Source_System = ST.Source_System WHERE ST.Source_System имеет значение null – xQbert

+0

Позвольте мне объясните вам сценарий. Предположим, что есть одна таблица, в которой хранится запись учащихся. Он имеет 3 столбца, имя студента, дату и посещаемость (Y/N). Теперь строка заполняется для ученика только в том случае, если в этот день пришел ученик, иначе в эту таблицу ничего не будет вставлено. Поэтому в основном я хочу получить имя учеников, которые не появлялись на определенную дату (чьи строки не вставлены в этот день). Надеюсь, это помогло. –

ответ

0

Существует несколько способов сделать это в зависимости от способа форматирования ваших данных. Если записи Source_system, которые не вставлены нулевые, простой Where заявление может быть использовано, чтобы найти то, что пусто и получить имя остальной части колонны

Select * 
From Table_name 
Where Source_system is null 

Поскольку ваши 20 различных значений, как известно, если у вас есть это в таблице, вы можете также Outer Join таблица и найти строки, в которых Source_system не соответствуют записям в таблице различных значений

Select Date_inserted_into_db, Source_system 
From Table_name T1 
Full Outer Join Table_of_distinct_values T2 on T1.Source_system = T2.Source_system 
Where Source_system is null 
+0

Ну, скажем, только данные из 19 исходных систем загружаются, тогда только 19 значений будут вставлены в эту таблицу. Ничто другое, даже не пустое. Другими словами, если данные из этой пропавшей исходной системы не были загружены, запись вообще не будет присутствовать в столбце Source_system. –

Смежные вопросы