2015-09-11 21 views
0

我不確定我是否正確地在標題中提問,但在這裏是正確的方案。如何從SQL表中獲取缺少的行?

假設我有每天插入行的SQL表。在這些行中有一列有一組值。這意味着在這一欄中,我們稱之爲Source_system,每天收到20個值。每天都有不同的價值。現在有什麼方法可以獲得那天未插入的源系統的名稱嗎?

編輯:對不起,英語不好。

+0

讓我們看看錶定義,一些樣本數據,和想要的結果的匹配整個表中的行。 – jarlh

+1

_現在有沒有什麼辦法可以得到當天沒有插入的源系統的名字?_是的。使用外部連接和所有系統的列表。假設yourTableName具有一組完整的值:'Select ST.InsertedDay,B.Source_System from(從yourTableName中選擇不同的source_System)B LEFT將您的表名ST添加到B.Source_System = ST.Source_System WHERE ST.Source_System爲空' – xQbert

+0

讓我解釋你的情況。假設有一個表格來維護學生的出勤記錄。它有3列,student_name,日期和出勤(是/否)。現在只有當學生在那一天出現時,該行纔會被填充,否則本表中不會插入任何內容。所以基本上我想取得沒有在特定日期出現的學生的姓名(當天沒有插入他們的行),我希望這會有所幫助。 –

回答

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列中。 –