0

テーブルでテストする必要があるのは、特定のユーザー ID と注文 ID の行が 2 つの別々の日 (タイムスタンプの DATETIME フィールド) にあるかどうかです。

私はhaving節が必要だと確信しており、それが私がここにいる理由です...それは私をひどく怖がらせます.

4

2 に答える 2

2

恐れる必要はありませんが、これは集計フィールドの「場所」にすぎません。

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 
于 2010-02-04T18:14:40.760 に答える
0

あなたの質問を理解できたかどうかわかりませんが、これでうまくいくかもしれません。HAVING はあなたの友人であり、引き続き WHERE 句を使用できます。これにより、テーブル内で複数回発生している順序とユーザー ID の組み合わせがわかります。

SELECT [UserId], [OrderId]
FROM OrderTable 
WHERE UserId = @UserId
AND OrderId = @OrderId
GROUP BY UserId, OrderId
HAVING Count(*) > 1
于 2010-02-04T18:23:39.153 に答える