我需要测试我的表,如果有一个给定的用户ID和顺序号在两个不同的天数(时间戳DATETIME字段)。

我敢肯定,我需要一个having子句,这就是为什么我在这里...这让我感到害怕了苦头。

有帮助吗?

解决方案

的应该不会吓到你,它仅仅是一个 “去哪儿” 上聚集的领域:

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的多个记录,空如果没有。

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

如果将不返回1,如果存在针对用户的多个记录,0

更新:不知道,你可以每天多个订单。此查询会做你想要什么:

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