sql >> Database >  >> RDS >> Sqlserver

COUNT(DISTINCT) in meerdere kolommen in SQL Server 2008

U kunt een cross apply . gebruiken en 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

Of je kunt een union all doen in een subquery.

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. SQL - Vind de datum die het dichtst bij de huidige datum ligt

  2. geoip postcode query

  3. Wat is er mis met deze AS3-code om te communiceren met een PHP-bestand?

  4. MySQL-groep per specifiek interval van 24 uur