Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

टीएसक्यूएल फॉर फिल्टर एक्सपीरियंस फ्रॉम रेंज मल्टीसेलेक्ट

सबसे पहले आपको एक टेबल चेकरेंज चाहिए

CREATE TABLE checkRanges
    ([checkID] int, [name] varchar(8), [low] int, [upper] int);

INSERT INTO checkRanges
    ([checkID], [name], [low], [upper])
VALUES
    (1, '0-3', 0, 2),
    (2, '3-6', 3, 5),
    (4, '6-9', 6, 8),
    (8, '9-12', 9, 11),
    (16, '12+', 12, 999)

देखें कैसे checkID 2 की शक्ति हैं?

आपके ऐप में यदि उपयोगकर्ता 3-6 . का चयन करता है और 9-12 आप भेजें 2+8 = 10 आपके डीबी के लिए। यह भी अच्छा होगा यदि आप डीबी जानकारी का उपयोग करके अपना चेक बॉक्स बनाते हैं।

अपने डीबी में आप सही श्रेणियों का चयन करने के लिए बिटवाइज तुलना करते हैं। फिर प्रत्येक श्रेणी के साथ बीच में प्रदर्शन करें।

WITH ranges as (
    SELECT *
    FROM checkRanges
    where checkID & 10 > 0
)
SELECT *
FROM users u
inner join ranges r
   on u.Experience between r.low and r.upper

यह सब एक साथ देखें SQL Fiddle डेमो मैं अधिक उपयोगकर्ताओं को शामिल करता हूं। आपको केवल क्लॉज़्यूल बदलना होगा where checkID & 10 > 0 अन्य संयोजन का परीक्षण करने के लिए।

नोट:
मैं श्रेणियों को अपडेट करता/करती हूं। ऊपरी मान को value - 1 . में बदलें क्योंकि between समावेशी है और डुप्लिकेट परिणाम दे सकता है।

यदि आप पुराने संस्करण का उपयोग करना चाहते हैं तो आपको betwewen . को बदलना होगा

. से जुड़ने वाले वाक्य में
u.Experience >= r.low and u.Experience *<* r.upper



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या गणना() में शर्त निर्दिष्ट करना संभव है?

  2. SQL सर्वर 2008 में पेजिनेशन कैसे करें?

  3. SQL सर्वर में दो तिथियों के बीच सभी सप्ताहों की शुरुआत और समाप्ति तिथियां कैसे प्राप्त करें?

  4. स्ट्रिंग वेरिएबल के लिए शून्य या खाली चेक

  5. SQL सर्वर NVarchar फ़ील्ड में जापानी वर्णों के बजाय प्रश्न चिह्न वर्ण क्यों संग्रहीत कर रहा है?