Sql server 创建计算列的帮助(sql server 2008)
你好 在此表上创建计算列时需要一些帮助:Sql server 创建计算列的帮助(sql server 2008),sql-server,calculated-columns,Sql Server,Calculated Columns,你好 在此表上创建计算列时需要一些帮助: USE [ScienceWorksSummary] GO /****** Object: Table [dbo].[Authors_Articles] Script Date: 04/07/2011 10:38:55 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Authors_Articles]( [IdAuthor] [
USE [ScienceWorksSummary]
GO
/****** Object: Table [dbo].[Authors_Articles] Script Date: 04/07/2011 10:38:55 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Authors_Articles](
[IdAuthor] [int] NOT NULL,
[IdArticle] [int] NOT NULL,
[Part] [float] NULL,
CONSTRAINT [PK_Authors_Articles] PRIMARY KEY CLUSTERED
(
[IdAuthor] ASC,
[IdArticle] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
计算列(Part)的目的是获得每个作者的一部分作品,这些作者写了同一篇文章。那么比如说,,
如果idAuthor=1,idArticle=1,idAuthor=2,idArticle=1,则每个部分都必须为0.5
谢谢你的帮助 谢谢!!:)将1.0/count()改为ROUND((1.0/count()),2),得到了我所需要的东西!
CREATE TABLE [dbo].[Authors_Articles](
[IdAuthor] [int] NOT NULL,
[IdArticle] [int] NOT NULL,
CONSTRAINT [PK_Authors_Articles] PRIMARY KEY CLUSTERED
(
[IdAuthor] ASC,
[IdArticle] ASC
))
GO
create function dbo.calcPart(@IdArticle int) returns float as
begin
return (Select 1.0/count(*) from [Authors_Articles] where IdArticle = @IdArticle)
end
GO
alter table Authors_Articles add Part as dbo.calcPart(IdArticle)