根据参数和不同的列值取得某列最小值(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