1

次のクエリがあります

DECLARE @onlymonth bit
SET @onlymonth = 0

DECLARE @month int
SET @month = 5

SELECT 
SUM(amount) amount
FROM accounting ac
WHERE
DATEPART(mm,ac.date) <= @month

私が欲しいのは、@onlymonthパラメーターに依存して、マイナー記号を削除することです...たとえば

...WHERE DATEPART(mm,ac.date) = CASE WHEN @onlymonth = 0 THEN = @month ELSE <= @month END...

そのようなもの..手がかりはありますか?

前もって感謝します。

4

3 に答える 3

2

これを試して:

SELECT 
    SUM(amount) amount
FROM
    accounting ac
WHERE
    (DATEPART(mm,ac.date) = @month and @onlymonth = 0)
OR
    (DATEPART(mm,ac.date) <= @month and @onlymonth = 1)
于 2013-07-30T22:14:00.720 に答える
0

これはあなたが望むことをします。

DECLARE @onlymonth bit
SET @onlymonth = 0

DECLARE @month int
SET @month = 5

if (@onlymonth = 0)
begin
    SELECT 
    SUM(amount) amount
    FROM accounting ac
    WHERE
    DATEPART(mm,ac.date) <= @month
end
else 
begin
    SELECT 
    SUM(amount) amount
    FROM accounting ac
    WHERE
    DATEPART(mm,ac.date) = @month
end
于 2013-07-30T22:13:29.320 に答える