2012-12-11 28 views
0

我有一個客戶數據庫,我正在運行一個查詢來查找一天中多次使用並輸出條形碼的任何條形碼......舉個例子如果條碼#1在特定日期掃描的3倍,它會顯示3個交易數據庫中的所有與條碼#1 ...這裏是一個基本的查詢現在我已經按日期搜索...如何查詢列中的多個條目

Select * 
FROM   Customers 
WHERE  (dtCreated BETWEEN CONVERT(DATETIME, '2012-12-10 00:00:00', 102) AND CONVERT(DATETIME, '2012-12-11 00:00:00', 102)) AND (sBarcode = '1') 

我不想搜索條形碼1,而是想知道2012年12月12日多次掃描的任何條形碼(sBarcode)。

回答

1

選擇條碼,計數(條形碼)從table_name的CNT在那裏通過條碼HAVING日期​​= desired_date組(COUNT(*)> 1)

+0

這很接近,但是它表示'cnt'的無效列名稱爲 – Shmewnix

+0

HAVING(COUNT(*)> 1),它是正確的。如果你編輯你的帖子,我可以給你信用的答案。 – Shmewnix

1

只要刪除最後的AND語句?

編輯:好的。你必須按條形碼分組,每天聚集一次。就這樣。喜歡的東西:

SELECT * 
WHERE (dtCreated BETWEEN CONVERT(DATETIME, '2012-12-10 00:00:00', 102) AND CONVERT(DATETIME, '2012-12-11 00:00:00', 102)) 
GROUP BY dtID, dtCreated 
HAVING COUNT(*) > 1 
+0

不,這將返回10日創建的所有客戶。我正在尋找重複的條碼創作。 – Shmewnix

+0

我偷了你的HAVING(COUNT(*)> 1),並使用TwTw和Rohit查詢。謝謝! – Shmewnix

+0

@skp。 。 。此查詢不是SQL Server的正確語法。 –

1
Select Count(barcode) counter 
FROM Customers 
WHERE (dtCreated BETWEEN CONVERT(DATETIME, '2012-12-10 00:00:00', 102) AND CONVERT(DATETIME, '2012-12-11 00:00:00', 102)) AND (sBarcode = '1') 
group by barcode 
having (COUNT(barcode) >= 1) 
+0

列「counter」無效 – Shmewnix

0

我這樣做:

select sbarcode 
from customers 
where cast(dtCreated as date) = '2012-12-10' 
group by sbarcode 
having count(*) > 1 

如果你想計數,那麼你將包括在select, count(*)