문제

내 테이블에서 테스트해야 할 것은 지정된 사용자 ID와 주문 ID에 대한 행이 별도의 이틀(타임스탬프에 대한 DATETIME 필드)에 있는지 여부입니다.

나는 had 절이 필요하다고 확신하며 그것이 바로 내가 여기 있는 이유입니다...그것은 나를 몹시 두렵게 합니다.

도움이 되었습니까?

해결책

was 당신을 놀라게해서는 안됩니다. 그것은 단지 집계 된 필드의 "곳"입니다.

Select UserID, Count(*) From OrderTbl Group By UserID Having Count(*) > 1

그것은 여러 주문이있는 모든 사용자에게 제공합니다.

Select UserID, Count(*) From OrderTbl Where (UserID=@UserID) Group By UserID Having Count(*) > 1 

@userid에 사용자 ID에 대한 여러 레코드가 있고 그렇지 않은 경우 NULL에 여러 레코드가있는 경우 수를 제공합니다.

if exists (Select UserID, Count(*) From OrderTbl Where (UserID=@UserID) Group By UserID 
             Having Count(*) > 1) Select 1 else Select 0

사용자에 대해 여러 레코드가 있으면 1을 반환합니다.

업데이트: 하루에 여러 주문을 할 수 있다는 것을 몰랐습니다. 이 쿼리는 원하는대로 수행합니다.

With DistinctDates as (Select Distinct UserID, [DATE] From OrderTbl Where (UserID=@UserID))
Select UserID, Count(*) From DistinctDates  
Group By UserID Having Count(*) > 1 

다른 팁

귀하의 질문을 이해했는지 잘 모르겠지만 이것이 귀하에게 도움이 될 수 있습니다.HAVING은 당신의 친구이며 WHERE 절을 계속 사용할 수 있습니다.이를 통해 테이블에서 어떤 주문과 사용자 ID 콤보가 두 번 이상 발생하는지 알 수 있습니다.

SELECT [UserId], [OrderId]
FROM OrderTable 
WHERE UserId = @UserId
AND OrderId = @OrderId
GROUP BY UserId, OrderId
HAVING Count(*) > 1
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top