بناء جملة SPROC T-SQL لإرجاع النتائج إذا كانت الصفوف موجودة في أيام متعددة

StackOverflow https://stackoverflow.com/questions/2202038

  •  18-09-2019
  •  | 
  •  

سؤال

ما أحتاج إلى اختباره على طاولتي هو إذا كان هناك صفوف للحصول على معرف مستخدم معين ومعرف الطلب في يومين منفصلين (حقل DateTime للايجار).

أنا متأكد من أنني سأحتاج إلى وجود جملة وهذا هو السبب في أنني هنا ... هذا يخيفني بشكل رهيب.

هل كانت مفيدة؟

المحلول

نأخذ لا ينبغي أن تخيفك، إنها مجرد "حيث" في مجال مجمع:

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 و null إذا لم يكن كذلك.

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 

نصائح أخرى

لست متأكدا إذا فهمت سؤالك، ولكن هذا قد يعمل من أجلك. وجود صديقك ويمكنك استخدام جملة WHERE. يجب أن يتيح لك ذلك معرفة أي ترتيب وسرد معرف المستخدم الذي يحدث أكثر من مرة في الجدول.

SELECT [UserId], [OrderId]
FROM OrderTable 
WHERE UserId = @UserId
AND OrderId = @OrderId
GROUP BY UserId, OrderId
HAVING Count(*) > 1
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top