Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

ĐẾM (DISTINCT) trong nhiều cột trong SQL Server 2008

Bạn có thể sử dụng cross apply và các giá trị 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

Hoặc bạn có thể thực hiện union all trong một truy vấn phụ.

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. Nhận số lượng và hàng trong cùng một truy vấn

  2. cách làm cho nội dung bảng được hiển thị tự động trong biểu mẫu bật lên

  3. Xử lý các lỗi nghiêm trọng cao trong SQL Server

  4. Cách tạo khóa chính tổng hợp trong SQL Server (Ví dụ T-SQL)

  5. Chèn nhiều nút vào trường xml trong một truy vấn