2012-12-11 3 views
0

고객 데이터베이스가 있으며 하루에 두 번 이상 사용 된 바코드를 찾기 위해 쿼리를 실행하여 바코드 만 출력하려고합니다. 예를 들어 바코드 # 1이 특정 날짜에 3 회 주사 한 경우는 ... 여기 내가 지금 날짜별로 검색 한 기본 쿼리입니다 ... 모든 바코드 # 1 데이터베이스에 3 트랜잭션을 표시합니다열의 여러 항목을 쿼리하는 방법

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을 검색하는 대신 12/10/12에 한 번 이상 스캔 한 바코드 (sBarcode)를 알고 싶습니다.

답변

1

선택 바코드, 바코드함으로써 날짜 = 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

내가 이런 짓을 했을까 TABLE_NAME에서 탄소 나노 튜브로 (바코드) 수 :

를 당신이 수를 원한다면
select sbarcode 
from customers 
where cast(dtCreated as date) = '2012-12-10' 
group by sbarcode 
having count(*) > 1 

, 당신은 select 라인 , count(*) 포함됩니다.

관련 문제