存储过程的T-SQL语法,如果多天存在的行返回结果
-
18-09-2019 - |
题
我需要测试我的表,如果有一个给定的用户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
不隶属于 StackOverflow