创建摘要视图

时间:2011-09-06 18:01:59

标签: sql database

我有一张问题表。问题可以是高优先级,低优先级,开放/已回答。创建摘要的最佳方法是什么。我应该使用视图还是几个存储过程?

表示例:

CREATE TABLE [dbo].[question] (
    [Id]            INT          NOT NULL,
    [Priority]      INT          NOT NULL,
    [State]         INT          NOT NULL)

我认为创建一个包含4列的视图是最好的:OpenQuestionHighPriority,OpenQuestionLowPriority,ClosedQuestionHighPriority,ClosedQuestionLowPriority。

想知道如何做到这一点或其他建议。

1 个答案:

答案 0 :(得分:1)

您可以使用case

进行查询
select  sum(case when priority = 1 and state = 1 then 1 end) 
            as OpenQuestionHighPriority
,       sum(case when priority = 1 and state = 2 then 1 end) 
            as ClosedQuestionHighPriority
....
from    dbo.question

您可以将此查询存储在视图,过程中,或者将其作为ad-hoc SQL执行。它将以任何一种形式工作。