ALTER PROCEDURE [dbo].[UP_AdvCount]
@UserId bigint
AS
BEGIN
SELECT
COUNT(distinct ADID) as total,
SUM(CASE WHEN ADState_Id = 999 THEN 1 ELSE 0 END) AS showCount,
SUM(CASE WHEN ADState_Id = 0 THEN 1 ELSE 0 END) AS noReviewCount,
SUM(CASE WHEN ADState_Id = 3 THEN 1 ELSE 0 END) AS pauseCount
From SK_ADVInfoList_VI WHERE DELETESTATE=0 AND AdUser_Id = @UserId
END是统计信息
表结构就不给了,太多,看起来麻烦
total统计 起来数据是对了,但是,其它根据状态 来统计 的不行,
状态和 ADID是多对一的关系 ,但 我要的是
显示的信息是这样的
名称 平台 状态
----------------------------------
应用1 平台1 未审核
平台2 审核通过
-----------------------------------
应用2 平台1 审核通过
平台2 审核通过
------------------------------------
应用3 平台1 未审核
平台2 未审核
这样,我应该统计的结果 是total(应用) =3
showCount(通过) = 2
noReviewCount(未审核)=2但出来 的结果 确是
total(应用) =3
showCount(通过) = 3
noReviewCount(未审核)=3求高手 帮我改下,怎么好合适
那就先对SK_ADVInfoList_VI进行归并
@UserId bigint
AS
BEGIN
SELECT
COUNT(distinct ADID) as total,
COUNT(distinct CASE WHEN ADState_Id = 999 THEN 平台 ELSE NULL END) AS showCount,
COUNT(distinct CASE WHEN ADState_Id = 0 THEN 平台 ELSE NULL END) AS noReviewCount,
COUNT(distinct CASE WHEN ADState_Id = 3 THEN 平台 ELSE NULL END) AS pauseCount
From SK_ADVInfoList_VI WHERE DELETESTATE=0 AND AdUser_Id = @UserId
END
SELECT
COUNT(distinct ADID) as total,
SUM(CASE WHEN ADState_Id = 999 THEN 1 ELSE 0 END) AS showCount,
SUM(CASE WHEN ADState_Id = 0 THEN 1 ELSE 0 END) AS noReviewCount,
SUM(CASE WHEN ADState_Id = 3 THEN 1 ELSE 0 END) AS pauseCount
From
(SELECT DISTINCT ADID,ADState_Id FROM SK_ADVInfoList_VI WHERE DELETESTATE=0 AND AdUser_Id = @UserId) t
哈,改错了,,开始用的AFID不行,,后来改成ADID了,,就可以了