1

これは私のクエリです

select  
 (sum(case when offer1_delivered is not null then 1 else null end) ) as PenetrationRate1
,(sum(case when offer2_delivered is not null then 1 else null end)) as PenetrationRate2
,count(TargetMkgListID) as TargetMkgListID from tablename

出力

PenetrationRate1    PenetrationRate2    TargetMkgListID 
1                   2                3

このクエリに customername 列を含める必要があります

select  customername,
 (sum(case when offer1_delivered is not null then 1 else null end) ) as PenetrationRate1
,(sum(case when offer2_delivered is not null then 1 else null end)) as PenetrationRate2
,count(TargetMkgListID) as TargetMkgListID from tablename
group by customername

クエリに customername を含めると、groupby が正しく機能しません。

4

3 に答える 3

4
SELECT  customername
,(ISNULL(SUM(CASE WHEN offer1_delivered is not null THEN 1 ELSE 0 END),0)) AS PenetrationRate1
,(ISNULL(SUM(CASE WHEN offer2_delivered is not null THEN 1 ELSE 0 END),0)) AS PenetrationRate2
,COUNT(TargetMkgListID) as TargetMkgListID from tablename
GROUP BY customername 
于 2012-11-02T03:20:19.687 に答える
1
select  customername,
 (sum(case when offer1_delivered is not null then 1 else 0 end) ) as PenetrationRate1
,(sum(case when offer2_delivered is not null then 1 else 0 end)) as PenetrationRate2
,count(TargetMkgListID) as TargetMkgListID from tablename
group by customername
于 2012-11-02T02:50:53.470 に答える
1

テーブルにcustomerNameの値が1つしかない場合は、試してください

select Min(customername),
       sum(case when offer1_delivered is not null then 1 end) PenetrationRate1,
       sum(case when offer2_delivered is not null then 1 end) PenetrationRate2,
       count(TargetMkgListID) TargetMkgListID 
from tablename

テーブルに複数のcustomerNameがある場合、CustomerNameをSelect句に追加しても、テーブル内のすべてのレコードの合計を取得することはできません(出力の1行のみ)。各customernameによるレコードの合計のみを取得できます。これは、2番目のクエリが実行する必要があることです。したがって、その2番目のクエリが目的のクエリではない場合は、問題が発生します。これは、必要なデータが論理的に不可能であるためです。

于 2012-11-02T02:52:49.010 に答える