2010-05-31 91 views
0

我有一个问题,从我的数据库中选择一些值。数据库处于设计阶段,所以我可以重新设计一些需要的。需要帮助汇总选择

你可以看到Diagram on this image

基本上我要选择的是

select 
c.campaignID, 
ct.campaignTypeName, 
c.campaignName, 
c.campaignDailyBudget, 
c.campaignTotalBudget, 
c.campaignCPC, 
c.date, 
cs.campaignStatusName 
***impressions, 
***clicks, 
***cast(campaignTotalBudget-(clicks*campaignCPC) as decimal(18,1)) as remainingFunds 
from Campaigns as c 
left join CampaignTypes as ct on c.campaignTypeID=ct.campaignTypeID 
left join CampaignStatuses as cs on c.campaignStatusID=cs.campaignStatusID 
left join CampaignVariants as cv on c.campaignID=cv.campaignID 
left join CampaignVariants2Visitors as c2v on cv.campaignVariantID=c2v.campaignVariantID 
left join Visitors as v on c2v.visitorID=v.visitorID 
..... 
order by c.campaignID desc 

问题是,参观者表已任命isClick列,所以我不知道分开是什么印象的方式isClick = false,点击是什么isClick = true,所以我可以显示所有关于广告系列和访问者的好表单...

我不认为要将访问者分成两个表格,如印象和点击是一个好主意因为再次乌尔德需要有游客多了两桌

感谢

+0

您能否澄清您的问题?你指**印象**就像它是一个对象。它是什么?您是否想要计算isClick = false vs isClick = true? – earthling 2010-05-31 22:15:44

+0

是的,isClick = 0是一个印象,isClick = 1是点击 – eugeneK 2010-06-01 06:16:40

回答

1

目前还不清楚什么是“印象”是你图所示。但是,如果您想知道如何计算每个广告系列的点击次数,则可以执行以下操作:

Select ... 
From Campaigns As c 
    ... 
    Left Join (
       Select V1.VisitorId 
        , CV2V1.CompaignVariantID 
        , Sum(Case When V1.IsClick = 1 Then 1 Else 0 End) As ClickCount 
        , Count(*) TotalVisitorCount 
       From Visitors As V1 
        Join CompaignVariant2Visitors As CV2V1 
         On CV2V1.VisitorId = V1.VisitorID 
       Group By V1.VisitorId, CV2V1.CompaignVariantID 
       ) As VisitTotals 
     On VisitTotals.VisitorId= C2V.VisitorId 
      And VisitTotals.CampaignVariantID = C2V.CampaignVariantID 
... 
Order By c.campaignID desc 
+0

isClick = 0是一个印象,isClick = 1是一个点击,我猜你是对的。 – eugeneK 2010-06-01 06:17:01

+0

@eugeneK - 应该注意的是,TotalVisitorCount将有效地为IsClick = 0或IsClick = 1。如果您想知道IsClick = 0的实例数,那么您希望将另一列添加到VisitTotals派生表中,如ClickCount除了IsClick = 0. – Thomas 2010-06-01 15:00:33

+0

谢谢。其实它的工作isClick = 1将总结点击的总数,而印象将是行数 - (isClick = 1) 谢谢 – eugeneK 2010-06-02 07:40:10