根据参数和不同的列值取得某列最小值(MSSQL)

CREATE TABLE #Score
(
 CreateDate DATETIME,
 Score1 FLOAT,
 Score2 FLOAT
)

INSERT INTO #Score VALUES( '2008-11-01', 0, 2)
INSERT INTO #Score VALUES( '2008-11-02', 12, 2)
INSERT INTO #Score VALUES( '2008-11-03', 0, 0)
INSERT INTO #Score VALUES( '2008-11-04', 51, 0)
INSERT INTO #Score VALUES( '2008-11-05', 52, 2)
 
DECLARE @IsClosed BIT

SET @IsClosed = 0
--找出score1等于零的最小日期
SELECT MIN(
           CASE
                WHEN @IsClosed = 0 THEN (CASE WHEN s.Score1 > 0 THEN NULL ELSE s.CreateDate END)
                ELSE (CASE WHEN s.Score2 > 0 THEN NULL ELSE s.CreateDate END)
           END
       )
FROM   #Score s


SET @IsClosed = 1
--找出score2等于零的最小日期
SELECT MIN(
           CASE
                WHEN @IsClosed = 0 THEN (CASE WHEN s.Score1 > 0 THEN NULL ELSE s.CreateDate END)
                ELSE (CASE WHEN s.Score2 > 0 THEN NULL ELSE s.CreateDate END)
           END
       )
FROM   #Score s


DROP TABLE #Score

posted @ 2008-12-18 17:54  Daniel-Zhang  阅读(280)  评论(0编辑  收藏  举报