سؤال

أرغب في استخدام قائمة بالأرقام التعسفية كنوع من المدخلات إلى Select. الخيار A ، بالطبع ، هو إنشاء جدول مؤقت يحتوي على القيم فقط (على سبيل المثال ، 1،2،3).

آمل أن تعرف الناس ما هو الخيار> A.

لنفترض أن البيان يشبه:

select Fx,
XXXXXX as Foo
from MyTable
where MyTest depends on each XXXXXX

لذا ، إذا كان بإمكاني جعل XXXXXX قائمة بالقيم (1،2،3) ، فسوف يكون لدي نتائج مثل:

    My val | Foo
    -------+---
       cat | 1
     mouse | 2
cheesecake | 3

مرة أخرى ، يمكنني الحصول على المدخلات من جدول ، لكنني أفضل ألا يكون ذلك ضروريًا. المعلمون ، من فضلك تتناغم.

تيا.

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

المحلول

من المحتمل أن تجد النجاح باستخدام وظيفة إجمالي نافذة ROW_Number ().

ترتيب عشوائي

SELECT CALENDAR_DATE
     , ROW_NUMBER()
       OVER (ORDER BY 1)
FROM SYS_CALENDAR.CALENDAR
WHERE CALENDAR_DATE BETWEEN DATE '2010-06-01' AND DATE 
;

أو طلب العمود

SELECT CALENDAR_DATE
     , ROW_NUMBER()
       OVER (ORDER BY CALENDAR_DATE)
FROM SYS_CALENDAR.CALENDAR
WHERE CALENDAR_DATE BETWEEN DATE '2010-06-01' AND DATE 
;

أو التقسيم بواسطة عمود آخر لإعادة تشغيل التسلسل

SELECT CALENDAR_DATE
     , YEAR_OF_CALENDAR
     , ROW_NUMBER()
       OVER (PARTITION BY YEAR_OF_CALENDAR
             ORDER BY CALENDAR_DATE)
FROM SYS_CALENDAR.CALENDAR
WHERE CALENDAR_DATE BETWEEN DATE '2009-11-01' AND DATE 
;

;

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top