は、ここで私はあなたの質問について作った仮定の全体の束に基づいて、この時の私の刺します。
は、ここでのサンプルデータを取得するために私のブートストラップコードです:
あなたのシリーズテーブル
DECLARE @series table
(
SeriesID int,
Title varchar(10),
DateAdded datetime
)
INSERT @series
SELECT 1,'series 1','10-10-2011'
UNION
SELECT 2,'series 2','8-01-2011'
UNION
SELECT 3,'series 3','11-30-2011'
あなたBoardCounterビュー(それはここではテーブルだが、それは問題ではないはずですし、あなたが把握しているんだと述べました既にアウトしています)
DECLARE @BoardCounter table
(
BoardID INT,
SeriesID INT,
[COUNTER] INT
)
INSERT @BoardCounter
SELECT 1,1,1000
UNION
SELECT 1,2,800
UNION
SELECT 1,3,600
UNION
SELECT 2,1,2000
UNION
SELECT 2,2,1600
UNION
SELECT 2,3,1200
UNION
SELECT 3,1,500
UNION
SELECT 3,2,400
UNION
SELECT 3,3,300
いいえ、あなたが望むと言っているビューの勇気です。上記のテーブルとビューを結合するだけです。ここでも、ビューが作成されると、この状況ではテーブルのように見えるので、これはうまくいきます。あまりにも派手ではない。私はあなたが指示したような経過日数でカウンターを分けました。両方の値を最初にFLOATに変換し、結果を小数点以下2桁に丸めたことがわかります。それは、あなたがきめ細かいランク付けをしたいという私のところの前提です。あなたは好きなように調整することができます。
select S.SeriesID, DateAdded as [Date], ROUND(CAST([COUNter] AS FLOAT)/CAST(datediff(day, DateAdded, GETDATE()) AS FLOAT),2) AS Ranking,S.Title
from @series s
INNER JOIN @BoardCounter bc
ON s.seriesid=bc.seriesid
だから、あなたはちょうどこの中にいくつかのテーブル/ビュー/列名を変更し、その上にAS CREATE VIEWを平手打ちする良いことがあります。