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

एसक्यूएल यह जांचने के लिए कि जोड़े कब मेल नहीं खाते

एक तरीका है exists . का उपयोग करना एक सहसंबद्ध उपश्रेणी के साथ विधेय करें जो जांचता है कि विशिष्ट प्रतीक के एक से अधिक मूल्य हैं:

select * from table1 t
where exists (
  select 1
  from table1
  where symbol = t.symbol
  and price <> t.price);

नमूना SQL Fiddle

यह वापस आ जाएगा:

|                   Date | Type |    Symbol |  Price |
|------------------------|------|-----------|--------|
| June, 30 1995 02:00:00 | gaus | 313586U72 | 109.25 |
| June, 30 1995 02:00:00 | gbus | 313586U72 | 108.94 |
| June, 30 1995 02:00:00 | agus |       SRR |  10.25 |
| June, 30 1995 02:00:00 | lcus |       SRR |   0.45 |
| July, 01 1995 02:00:00 | gaus | 313586U72 | 109.25 |
| July, 01 1995 02:00:00 | gbus | 313586U72 | 108.94 |

संपादित करें:गॉर्डन लिनॉफ़्स के चतुर उत्तर से प्रेरित एक अन्य विकल्प avg() . का उपयोग करना हो सकता है विंडो वाले फ़ंक्शन के रूप में:

select Date, Type, Symbol, Price  
from (
  select Date, Type, Symbol, Price, avg = avg(price) over (partition by symbol) 
  from table1) a
where avg <> price;

संपादित करें:यह सुनिश्चित करने के लिए एक चेक के साथ कि एक ही तिथि पर केवल डुप्लिकेट लौटाए जाते हैं:http:/ /www.sqlfiddle.com/#!6/29d67/1



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TSQL फाइंडिंग ऑर्डर जो लगातार 3 महीनों में हुआ

  2. टी-एसक्यूएल में गुणन चलाना

  3. संग्रहीत कार्यविधि के लिए एक SqlParameter में दिनांक समय का उपयोग करना, प्रारूप त्रुटि

  4. SQL सर्वर - आधार समय से 15 मिनट से 14 दिनों तक होने वाली घटनाओं की गणना करें

  5. IN खंड द्वारा SQL सर्वर परिणामों का आदेश देना