テーブルでテストする必要があるのは、特定のユーザー ID と注文 ID の行が 2 つの別々の日 (タイムスタンプの DATETIME フィールド) にあるかどうかです。
私はhaving節が必要だと確信しており、それが私がここにいる理由です...それは私をひどく怖がらせます.
テーブルでテストする必要があるのは、特定のユーザー ID と注文 ID の行が 2 つの別々の日 (タイムスタンプの 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 のレコードが複数ある場合はカウントされ、そうでない場合は null になります。
if exists (Select UserID, Count(*) From OrderTbl Where (UserID=@UserID) Group By UserID
Having Count(*) > 1) Select 1 else Select 0
ユーザーに複数のレコードがある場合は 1 を返し、そうでない場合は 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