我會嘗試用類似但更簡單的問題來解釋我的問題。假設我正在爲圖書館編寫軟件,該圖書館的表格爲Patron
s和Book
s。此外,它還有一個CheckOuts
表,它將Patron
s與他們已檢出的任何Book
s(每行1個)相關聯。TSQL聚合函數產生一個是或否的標誌
我使用的是MSSQL 2005,需要構建一個包含兩列,PatronID
和HasBook
一個視圖或存儲過程,這需要動態生成的:1,如果顧客有一個或多個書籤出,否則爲0 。
這是我在寫一個查詢第一次嘗試這樣做:
SELECT PatronID, MIN((SELECT 1, COUNT(BookID) FROM CheckOuts WHERE CheckOuts.PatronID = Patrons.PatronID)) AS HasBook
FROM Patrons
我收到的錯誤是:
不能對包含 的表達式執行聚合函數 聚合或子查詢。
我是一個非常新的SQL用戶,所以如果這個查詢讓你感到畏縮,我會真誠地感謝你想給的任何建議。我對「正確」的方式非常感興趣。
如果一本書沒有簽出,那麼`CheckOuts`表將沒有行匹配`Book`,對吧?同樣,如果顧客沒有書,「CheckOuts」表將沒有匹配的「顧客」? – Matthew 2011-01-06 18:56:23