【发布时间】:2015-08-25 19:57:21
【问题描述】:
我需要选择生效日期小于今天的项目费率或班次率。
SELECT
CASE
WHEN ISNULL(s.rate,0) = 0
THEN SELECT TOP 1 pr.rate FROM ProjectRates pr WHERE (pr.projectID = p.ID) AND (pr.effectiveDate < GETDATE()) ORDER BY pr.effectiveDate DESC
--p.rate
ELSE SELECT TOP 1 sr.rate FROM ShiftRates sr WHERE (sr.shiftID = s.ID) AND (sr.effectiveDate < GETDATE()) ORDER BY pr.effectiveDate DESC
--s.rate
END AS rate
FROM Projects p
INNER JOIN Shifts s ON (p.ID = s.projectID)
WHERE (p.ID = @projectID)
请注意,此代码 sn-p 是较大存储过程的一部分,因此它必须在 CASE 语句中。
【问题讨论】:
-
有什么问题?
标签: sql sql-server