RankTable

出自ProgWiki

跳轉到: 導航, 搜尋

目錄

用途

Table定義

欄位名稱 資料類型 用途
ID INT 唯一編號(管理級距表時使用)
ClassID INT 級距表類型編號, 以方便多張級距表放於同一個Table之類, 以便集中管理
RankDown DECIMAL(18, 0) 級距下限
RankUp DECIMAL(18, 0) 級距上限
RankValue DECIMAL(18, 6) 級距值(用來放要計算的比例值)
RankDiff DECIMAL(18, 0) 累進差額 (如果不計算累進差額者, 此欄位值保持0)
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[RankTable](
	[ID] [INT] IDENTITY(1,1) NOT NULL,
	[ClassID] [INT] NOT NULL,
	[RankDown] [DECIMAL](18, 0) NOT NULL,
	[RankUp] [DECIMAL](18, 0) NOT NULL,
	[RankValue] [DECIMAL](18, 6) NOT NULL
    [RankDiff] [DECIMAL](18, 0) NOT NULL,
) ON [PRIMARY]

GetRankTable

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
 
CREATE PROCEDURE [dbo].[GetRankTable]
(
	@ClassID AS INT
)
AS
BEGIN
	SET NOCOUNT ON;
 
	SELECT * FROM RankTable
		WHERE ClassID = @ClassID;
		ORDER BY RankDown;
END
GO

CalcRankValue

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
 
CREATE FUNCTION [dbo].[CalcRankValue]
(
	@ClassID AS INT
	,@InValue AS DECIMAL(18, 0)
)
RETURNS DECIMAL(18, 0)
AS
BEGIN
	DECLARE @ResultVar AS DECIMAL(18, 0)
	SET @ResultVar = 0
 
	SELECT @ResultVar = @InValue * [RankValue] - [RankDiff]
		FROM RankTable
		WHERE ClassID = @ClassID
		And RankDown >= @InValue
		And RankUp < @InValue;
 
	RETURN @ResultVar
END
GO
個人工具
名字空間
變換
動作
導航
分類
其他
技術類News或部落格
工具箱