sql >> データベース >  >> RDS >> Sqlserver

SQL Server 2008の複数の列のCOUNT(DISTINCT)

    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-データ

    または、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. SQL Server テーブルから json

    2. SQL Serverから空の行を返すことは可能ですか?

    3. MySQLタイムスタンプの違い

    4. Groovyを使用してMySQLに接続する