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

COUNT(DISTINCT) dalam beberapa kolom di SQL Server 2008

Anda dapat menggunakan cross apply dan values .

select T1.AssetId,
       count(distinct T2.ID) TotalIds,
       sum(case T2.InStock when 0 then 0 else 1 end) AvailableIds 
from YourTable as T1
  cross apply(values(T1.MyId, T1.InStock),
                    (T1.TheirId, 0)
             ) as T2(ID, InStock)
group by T1.AssetId  

SE-Data

Atau Anda dapat melakukan union all dalam subkueri.

select T.AssetId,
       count(distinct T.ID) TotalIds,
       sum(case T.InStock when 0 then 0 else 1 end) AvailableIds 
from (
     select AssetId, MyId as ID, InStock
     from YourTable
     union all
     select AssetID, TheirId, 0
     from YourTable
     ) as T
group by T.AssetId  


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan Penyimpanan Intel Optane untuk SQL Server

  2. Bagaimana cara menulis karakter UTF-8 menggunakan penyisipan massal di SQL Server?

  3. Cara Menambahkan Batasan Kunci Asing ke Tabel yang Ada di SQL Server (T-SQL)

  4. Bagaimana cara memasukkan tabel data ke tabel database SQL Server?

  5. Mengubah parameter multi-nilai menjadi tabel sementara di SQL Server Business Intelligence Development Studio