【发布时间】:2015-01-15 16:44:43
【问题描述】:
尝试根据当前日期设置一个变量并通过 SQL 函数传递给查询。它在 IF 语句中出错。有什么想法吗?
CREATE FUNCTION CS_AwaredRCPs
(
@currentDate DATE,
@fiscalYear INT
IF DATEPART(m,@currentDate) > 10
SET @fiscalYear = DATEPART(yyyy,@currentDate)
ELSE
SET @fiscalYear = DATEPART(yyyy,@currentDate) - 1
END
)
RETURNS TABLE
AS
RETURN
(
SELECT dbo.tbl_requirementManagement.postaward_specialist_id,
SUM(dbo.tbl_requirementManagement.actual_award_value) AS AwardValue,
COUNT(dbo.tbl_requirementManagement.postaward_specialist_id) AS AwardCount
FROM dbo.tbl_requirementManagement RIGHT OUTER JOIN
dbo.vw_ContractSpecialists ON dbo.tbl_requirementManagement.postaward_specialist_id = dbo.vw_ContractSpecialists.user_certificateSerialNumber
GROUP BY dbo.tbl_requirementManagement.statusID, dbo.tbl_requirementManagement.postaward_specialist_id, dbo.tbl_requirementManagement.fiscal_year
HAVING (dbo.tbl_requirementManagement.statusID = 4) AND
(dbo.tbl_requirementManagement.postaward_specialist_id <> 0) AND
(dbo.tbl_requirementManagement.fiscal_year = @fiscalYear)
)
`
【问题讨论】:
-
不使用时为什么要传入
@FiscalYear? IF / ELSE 在所有情况下都会分配它,因此为@FiscalYear传入的值从未实际使用过。 -
我对需要申报或通过什么感到困惑。
标签: sql-server function parameter-passing