2011-04-07 2 views
3

인사말.계산 열 만들기에 대한 도움말 (SQL Server 2008)

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 

계산 된 열 (부)의 포인트는 같은 기사를 쓴 각 작가의 작품의 일부를 얻을 수 있습니다 :

이 테이블에 계산 된 열을 만드는 약간의 도움이 필요합니다. 예를 들어, idAuthor = 1, idArticle = 1 및 idAuthor = 2, idArticle = 1 인 경우 과 같이 Part는 각각 0.5 여야합니다.

도움 주셔서 감사합니다.

답변

3
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) 
+0

감사합니다. :) 1.0/count (*)를 ROUND ((1.0/count (*)), 2)로 변경하고 필요한 것을 얻었습니다! – DeadDream