Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL untuk memeriksa saat pasangan tidak cocok

Salah satu caranya adalah dengan menggunakan exists predikat dengan subkueri berkorelasi yang memeriksa bahwa simbol tertentu memiliki lebih dari satu harga.:

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

Contoh SQL Fiddle

Ini akan mengembalikan:

|                   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 |

Sunting:terinspirasi oleh jawaban pintar Gordon Linoff, opsi lain adalah menggunakan avg() sebagai fungsi berjendela:

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

Sunting:dengan tanda centang untuk memastikan hanya duplikat pada tanggal yang sama yang dikembalikan: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. SQL Server AutoIncrement bervariasi berdasarkan nilai bidang lain

  2. Bagaimana cara terus menambahkan nilai dari baris awal dan baris berikutnya?

  3. Membuat pemicu audit di SQL Server

  4. Bagaimana cara memeriksa status replikasi SQL melalui T-SQL?

  5. Apakah ada perbedaan teknis yang besar antara tipe data VARBINARY(MAX) dan IMAGE?