基于 SQL server 2008 中的属性从大型数据库创建视图

     2023-02-26     109

关键词:

【中文标题】基于 SQL server 2008 中的属性从大型数据库创建视图【英文标题】:Creating Views from a large database on the basis of attributes in SQL server 2008 【发布时间】:2014-08-12 05:54:23 【问题描述】:

我有一个大型数据库,其中包含不同项目、业务线、地理位置的不同成本和收入。我需要做的是根据地理区域、时间段、项目、业务线等不同属性创建视图。它给出了每个项目的利润,然后是业务线,最后是组织的总利润全世界。所有这些都必须在 SQL-Server 2008 中完成。

【问题讨论】:

您的问题是什么?如何创建视图? 我想创建根据地理属性分类的不同视图,项目显示每个项目的利润,同时考虑所有成本和收入,然后利润并将它们汇总以找到业务线的利润,运营单位和地理区域的最终利润。 鉴于您帖子中的信息,无法详细说明如何创建此类视图。我建议您创建一个包含表定义(创建表语句)、一些示例数据(插入语句)以及您希望视图做什么的详细说明的最小示例。许多发帖人为此使用 sqlfiddle (sqlfiddle.com)。 【参考方案1】:

使用内联视图,这些将减少运行时间的成本。 使用临时表更新您的结果,然后将结果放入主表或视图中。 给定查询是使用内联视图的我的视图的一部分。

 BEGIN
UPDATE (SELECT CCTP.BORRO_OCCUPATION,
               CCTP.BORRO_MARITAL_STS,
               CCTP.BORRO_EDU_LVL,
               OC.OCCUPATION_DSC,
               MSC.MARITAL_STATUS_DSC,
               AEC.EDUCATION_DESC
          FROM CALL_CENTRE_INFO_LIVE    CCTP,
               BP_INDIVIDUAL            BI,
               OCCUPATION_CODE          OC,
               MARITAL_STATUS_CODE      MSC,
               APPLICANT_EDUCATION_CODE AEC
         WHERE BI.BUSINESS_PARTNER_ID = CCTP.BORROWER_ID
           AND OC.OCCUPATION_CDE = BI.OCCUPATION_CDE
           AND MSC.MARITAL_STATUS_CDE = BI.MARITAL_STATUS_CDE
           AND AEC.EDUCATION_CDE = BI.EDUCATION_CDE) T

   SET T.BORRO_OCCUPATION  = T.OCCUPATION_DSC,
       T.BORRO_MARITAL_STS = T.MARITAL_STATUS_DSC,
       T.BORRO_EDU_LVL     = T.EDUCATION_DESC;

例外 其他时候 P_RETURN := -1; 返回; 结束;

CALL_CENTRE_INFO_LIVE 这是我的临时表,这部分代码是主表的更新语句。 希望它会帮助你(虽然它很复杂但很有帮助)。

【讨论】:

【参考方案2】:

在您的场景中,我认为索引/物化视图将从性能角度为您提供很多帮助,因为它会为您的视图提供索引,并且还可以提高聚合函数的性能。

【讨论】:

SQL Server 2008 中的登录用户映射问题

】SQLServer2008中的登录用户映射问题【英文标题】:LoginUserMappingissueinSQLServer2008【发布时间】:2009-08-2718:03:10【问题描述】:不久前,我在WindowsXP中的SQLServer2008下建立了一个名为myDB的数据库,然后在服务器下的Logins下,我单击了... 查看详情

基于 SQL Server 中的一列透视多列

】基于SQLServer中的一列透视多列【英文标题】:PivotmultiplecolumnsbasedononecolumninSQLServer【发布时间】:2013-08-0402:42:31【问题描述】:我在SQLServer2008R2中有以下源表和目标表。如何在TSQL中进行数据透视以将SourceTbl转换为DestTbl?希望em... 查看详情

基于 SQL Server 2008 中列值的内部联接

】基于SQLServer2008中列值的内部联接【英文标题】:InnerJoinbasedoncolumnvalueinSQLServer2008【发布时间】:2015-02-0323:11:43【问题描述】:我想根据列值连接两个表如果pm.ServiceLevelID的值为1或NULL,则在u.FacilityId上进行内连接如果pm.ServiceLev... 查看详情

如何将标识属性添加到 SQL Server 中的现有列

】如何将标识属性添加到SQLServer中的现有列【英文标题】:HowdoIaddtheidentitypropertytoanexistingcolumninSQLServer【发布时间】:2008-11-1320:47:11【问题描述】:在SQLServer(在我的例子中,2005)中,如何使用T-SQL将标识属性添加到现有表列?... 查看详情

视图与内联子查询 SQL Server 2005/2008

】视图与内联子查询SQLServer2005/2008【英文标题】:Viewsvs.inlinesubqueriesSQLServer2005/2008【发布时间】:2008-10-0809:36:44【问题描述】:在我的应用程序的某些区域中,我需要来自数据库中多个表的数据(我有一个应用程序,该应用程序... 查看详情

在 SQL Server Management Studio 中更改 SQL Server 数据库中的列属性

】在SQLServerManagementStudio中更改SQLServer数据库中的列属性【英文标题】:ChangingcolumnpropertiesinSQLServerdatabaseinSQLServerManagementStudio【发布时间】:2011-05-2315:06:53【问题描述】:当我想通过SQLServerManagementStudioExpress更改SQLServerExpress2008R2... 查看详情

SQL Server 2008 中的 SQL Server 2008 R2 中的 dm_os_volume_stats 等效项是啥?

】SQLServer2008中的SQLServer2008R2中的dm_os_volume_stats等效项是啥?【英文标题】:Whatistheequivalentofdm_os_volume_statsinSQLServer2008R2inSQLServer2008?SQLServer2008中的SQLServer2008R2中的dm_os_volume_stats等效项是什么?【发布时间】:2015-02-2406:53:57【问 查看详情

SQL Server 2008 中的 PIVOT SQL 数据

】SQLServer2008中的PIVOTSQL数据【英文标题】:PIVOTSQLdatainSQLServer2008【发布时间】:2020-06-3012:18:39【问题描述】:我需要在SQLServer2008中透视数据。有人可以给我一些建议吗?我的原始数据如下所示:createtable#tbl(ServiceDesc_2varchar(20),Lis... 查看详情

SQL Server 2008 中的 MERGE 语句

】SQLServer2008中的MERGE语句【英文标题】:MERGEstatementinSQLServer2008【发布时间】:2011-12-1815:20:37【问题描述】:我有一张桌子student(intID,nvarchar(10)studentName)和一个表用户类型myStudentType(intID,nvarchar(10)studentName)我需要创建一个接受myStud... 查看详情

SQL Server 2008 中的截断/清除表变量

】SQLServer2008中的截断/清除表变量【英文标题】:Truncate/CleartablevariableinSQLServer2008【发布时间】:2014-02-2615:52:22【问题描述】:是否可以在SQLServer2008中截断或清除表变量?declare@tableVariabletable(idint,valuevarchar(20))while@start<=@stopbegi... 查看详情

SQL Server 2008 中的事务问题

】SQLServer2008中的事务问题【英文标题】:transactionquestioninSQLServer2008【发布时间】:2010-06-1910:08:58【问题描述】:我使用的是SQLServer2008Enterprise。并使用ADO.Net+C#+.Net3.5+ASP.Net作为客户端访问数据库。当我访问SQLServer2008表时,我总... 查看详情

SQL Server 2008 中的数据转换

】SQLServer2008中的数据转换【英文标题】:DataConversioninSQLServer2008【发布时间】:2013-09-2405:19:31【问题描述】:我需要连接2列并在我的存储过程中显示为单个字段。ColumnBatch-intColumnAdmissionNo-nvarchar我试过这样查询select(a.AdmissionNo+\'-... 查看详情

SQL Server 2008 中的 PIVOT / UNPIVOT

】SQLServer2008中的PIVOT/UNPIVOT【英文标题】:PIVOT/UNPIVOTinSQLServer2008【发布时间】:2010-04-2023:37:30【问题描述】:我有如下子/父表。主表:MasterID,Description子表ChildID,MasterID,Description.使用PIVOT/UNPIVOT如何在单行中获得如下结果。if(Master... 查看详情

SQL Server 2008 中的领导

】SQLServer2008中的领导【英文标题】:LEADinSQLServer2008【发布时间】:2018-02-2816:18:27【问题描述】:我已经完成了一个包含LEAD的存储过程,不幸的是该脚本必须在2008年运行,所以有人知道如何在2008年实现这一目标吗?INSERTINTO#ARTIC... 查看详情

SQL Server 2008 中的用户登录失败

】SQLServer2008中的用户登录失败【英文标题】:LoginfailedforUserinSQLServer2008【发布时间】:2013-12-3109:43:35【问题描述】:我需要创建一个只能在SQLServer中执行存储过程的用户。我使用这个查询CREATELOGINSLoginWITHPASSWORD=N\'#######\',DEFAULT_DA... 查看详情

查看 SQL Server 2008 中的所有事务日志

】查看SQLServer2008中的所有事务日志【英文标题】:ViewalltransactionlogsinSQLServer2008【发布时间】:2010-11-1515:37:39【问题描述】:问题是这样的:t0:Insertismadeintomydatabaset1:Deleteisexecutedt2:Fullbackupismadet3:Transactionlogbackupismade如何在t3(现... 查看详情

如何检查 SQL Server 2008 中的多个参数?

】如何检查SQLServer2008中的多个参数?【英文标题】:HowtocheckmultipleparametersinSQLServer2008?【发布时间】:2012-03-3106:51:54【问题描述】:如何将多个值传递给SQLServer2008中的存储过程?我的桌子是这样的:idTagplatform1#class1,#class2CS2#class... 查看详情

替换 SQL Server 2008 中的最后一个字符

】替换SQLServer2008中的最后一个字符【英文标题】:ReplaceLastcharacterinSQLServer2008【发布时间】:2014-10-3007:10:38【问题描述】:我正在使用SQLServer2008,遇到了关于字符替换的问题。如果我使用SELECTREPLACE(MYWORD,0,1)FROMMYTABLE它将所有0替... 查看详情