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

SQL Query untuk memilih entitas dari tabel perubahan riwayat

Dari apa yang saya baca, saya berasumsi bahwa Anda menginginkan semua perusahaan yang memiliki status 1 di dalam rentang tanggal Anda. Jika ini yang Anda inginkan, itu cukup mudah.

Pernyataan berikut harus melakukan pekerjaan:

SELECT C.*
  FROM COMPANY C
  LEFT JOIN ( SELECT H.STATUS, H.COMPANY_ID
                FROM COMPANYSTATUS H
               WHERE H.STATUS_EFFECTIVE_DATE = (SELECT MAX(H1.STATUS_EFFECTIVE_DATE)
                                                  FROM COMPANYSTATUS H1
                                                 WHERE H1.COMPANY_ID = H.COMPANY_ID
                                                   AND H1.STATUS_EFFECTIVE_DATE <= '20171231'
             ) CH ON CH.COMPANY_ID = C.ID   
 WHERE ( C.STATUS = 1 AND CH.COMPANY_ID IS NULL ) -- CASE #1 : STATUS = 1 AND NEVER CHANGED (NO HISTORY)
    OR H.STATUS = 1

Apa yang saya lakukan adalah membuat tampilan bersarang dengan status terakhir hingga akhir rentang tanggal Anda, jadi jika perubahan terakhir dari status perusahaan adalah 1 maka perusahaan ini harus disertakan dalam hasil Anda. Kami tidak peduli dengan perubahan setelah rentang tanggal Anda, jadi saya menempatkan batasan di dalam tampilan bertingkat.

Awal rentang Anda tidak signifikan untuk permintaan ini. Anda mungkin perlu untuk tujuan lain, untuk bergabung dengan tabel lain.

Saya orang Oracle, jadi saya pikir bisa membuat pernyataan ini jauh lebih baik menggunakan analitik Oracle, tapi saya pikir itu akan menjadi pernyataan yang valid untuk SQL server.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ubah nama kolom saat menggunakan PIVOT SQL Server 2008

  2. Cara mengubah/mengatur susunan dalam Kode EF terlebih dahulu

  3. Cara Menambahkan Filegroup ke Database SQL Server (T-SQL)

  4. Bagaimana cara memodelkan data yang perlahan berubah seiring waktu?

  5. Cuplikan Basis Data SQL Server -4