複数の日に行が存在する場合に結果を返す SPROC T-SQL 構文
-
18-09-2019 - |
質問
テーブルでテストする必要があるのは、指定されたユーザー ID と注文 ID の行が 2 つの別々の日に存在するかどうかです (タイムスタンプの DATETIME フィールド)。
私は、having 節が必要であると確信しており、それが私がここにいる理由です...それが私をひどく怖がらせます。
解決
持っている 心配する必要はありません。これは集計フィールド上の単なる「Where」です。
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
所属していません StackOverflow