我是一个开发人员,他正在使用现有的基于ASP.NET MVC / SQL Server 2012的应用程序。
应用程序的主要内容是捕获销售代表的日常工作。为此,我们有两个主要表DailyCallMaster
和DailyCallClientDetails
。我们有客户等的主人,但问题的核心不是那个。
DailyCallMaster 列:
DailyCallClientDetails 列:
有关客户的更多专栏......
查询模式(英文):
Select sum(BusinessAssured)
对于遇到的每个客户说“2014年1月1日”到“2014年3月1日”,其ClientListenStatus为“活动”且呼叫状态为“已满”或“半”。
问题
这些矛盾不是吗?我理解答案是“它取决于”这就是我提供查询模式的原因,但显然我对每个表都有C / R / U / D操作。如何在保持绩效考虑的同时在上述方面取得平衡?
如果有帮助,典型的数据输入在标题表中每月几千个,在子表中几千个数千(每个代表每天最多10个客户,每月25天)至少)
我是新手,我从Paul Randall / Kimberly Tripp那里读了许多文章,并且在我感到困惑之前发布了这个问题之前,他们对类似的问题做了很多非常有意义的答案(得到了SO的链接)。
修改:
为marc_s评论添加查询:(可能与查询模式不完全匹配,但更接近,因为它有更多真实的列名和数据)
SELECT
SUM(BusinessAssured) AS '[Business Assured]',
DailyCallClientDetails.Client_Code
FROM
DailyCallMaster dcm
INNER JOIN
DailyCallClientDetails dcc ON dcm.DailyCallCode = dcc.DailyCallCode
WHERE
dcc.ClientListenStatus IN ('A','I')
AND dcc.Flag = 'F'
AND dcm.SalesRepUserCode IN ('X','Y','Z','A','B','C' etc)
--This IN clause is a list of SalesRepUserCode chosen in a tree view in UI
AND dcm.ActualDateOfReport >='2013-08-01'
AND dcm.ActualDateOfReport <='2013-08-30'
AND client_code IS NOT NULL
GROUP BY
dcc.ClientCode
请帮忙
干杯