Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

COUNT(DISTINCT) в множество колони в SQL Server 2008

Можете да използвате cross apply и 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

Или можете да направите union all в подзаявка.

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. Как да преминавам само през файлове, които не съществуват в дестинацията, използвайки SSIS пакет?

  2. Проверка дали дадена дата се вписва между диапазон от дати

  3. Конкатениране на редове от изчислена колона с псевдоним

  4. Вземете всички родители за дете

  5. Съхраняване на изображения в база данни