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

Temukan kolom yang hanya berisi nol

declare @T table
(
  Col1 int,
  Col2 int,
  Col3 int,
  Col4 int
)

insert into @T values
(1,   0   , null, null),
(0,   null, 0   , 1)

select U.ColName
from
  (
    select count(nullif(Col1, 0)) as Col1,
           count(nullif(Col2, 0)) as Col2,
           count(nullif(Col3, 0)) as Col3,
           count(nullif(Col4, 0)) as Col4
    from @T
  ) as T
unpivot
  (C for ColName in (Col1, Col2, Col3, Col4)) as U
where U.C = 0

Hasil:

ColName
----------
Col2
Col3

Ide di balik ini adalah untuk menghitung non null nilai dan hanya simpan yang memiliki hitungan 0 .

COUNT hanya akan menghitung nilai bukan nol.
NULLIF(ColX, 0) akan membuat semua 0 menjadi null .
Kueri dalam mengembalikan satu baris dengan empat kolom. UNPIVOT akan memutarnya sehingga Anda memiliki dua kolom dan empat baris.
Akhirnya where U.C = 0 memastikan bahwa Anda hanya mendapatkan kolom yang tidak memiliki nilai selain null atau 0 .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. bagaimana cara membagi dan memasukkan data CSV ke tabel baru dalam satu pernyataan?

  2. Bagaimana cara menjatuhkan kunci asing di SQL Server?

  3. Tips Cepat untuk Memperbaiki dan Memulihkan Database SQL Tanpa Cadangan

  4. Memahami Grup Ketersediaan Selalu AKTIF antara Instans SQL Server Berbasis Linux. Bagian 1

  5. Ubah Format Tanggal Untuk Sesi Saat Ini di SQL Server