我有三個表,書籍和客戶端。SQL在兩個日期之間選擇具有最大重複的行
- 圖書(ID,標題......)
- 借記(BooksID,客戶端Id,BorrowingDate,....)
- 客戶端(ID,姓名,...)
我需要SQL查詢,該查詢將返回 一本在兩個日期之間出租次數最多的書籍。 日期將作爲參數傳遞給查詢。
我有三個表,書籍和客戶端。SQL在兩個日期之間選擇具有最大重複的行
我需要SQL查詢,該查詢將返回 一本在兩個日期之間出租次數最多的書籍。 日期將作爲參數傳遞給查詢。
這個怎麼樣?
SELECT * FROM Books INNER JOIN Debit ON Books.Id = Debit.BooksID WHERE BorrowingDate >= @StartDate AND BorrowingDate <= @EndDate
如果你在你想什麼,輸出的例子編輯看起來像我可以重新定義上面的查詢,以幫助你得到你想要的東西。
並且爲了記錄,阿德里安是對的;通常情況下最好是自己嘗試一下,並帶着一個問題來找我們,而不是要求SO爲你解決問題。但希望我在這裏能讓你開始。歡迎來到SO! :)
編輯
它也只是發生在我身上,你可能會尋找這是租給最多次的兩個日期之間的書......如果是的話,試試這個:
SELECT TOP 1 Books.* FROM (
SELECT COUNT(*) AS DebitCount, BooksID FROM Debit WHERE BorrowingDate >= @StartDate AND BorrowingDate <= @EndDate GROUP BY BooksID
) Debits INNER JOIN Books ON Books.ID = Debits.BooksID
ORDER BY DebitCount DESC
希望幫助!
這正是我正在尋找的。非常感謝你。 – Rajko
查詢...
SELECT TOP 1 *
FROM (
SELECT BooksID, COUNT(*) AS C
FROM Debit
WHERE BorrowingDate BETWEEN @min_date and @max_date
GROUP BY BooksID
)
ORDER BY C DESC
...會產生含有BooksID
和數量一直租住@min_date
和@max_date
之間最次的書租金一行。
如果您需要的不僅僅是BooksID
,您可以稍後輕鬆加入Books
。
+1因爲即使我們得到了幾乎相同的答案,您已經將我介紹給了「BETWEEN」運算符! –
您的回答也幫助了我,謝謝。 – Rajko
你試過了什麼? –