Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SELECT CASE语句未执行的空结果_Sql Server_Case_Aggregate Functions - Fatal编程技术网

Sql server SELECT CASE语句未执行的空结果

Sql server SELECT CASE语句未执行的空结果,sql-server,case,aggregate-functions,Sql Server,Case,Aggregate Functions,以下是我的疑问: DECLARE @ThisYear INT = CAST(DATEPART(yy, GETDATE()) AS INT) ,@LastYear INT = CAST(DATEPART(yy, GETDATE()) - 1 AS INT) SELECT CASE WHEN CAST(DATEPART(yy, mq.[qDate]) AS INT) = @ThisYear THEN 5 WHEN CAST(DATEPART(y

以下是我的疑问:

DECLARE
    @ThisYear INT = CAST(DATEPART(yy, GETDATE()) AS INT) 
    ,@LastYear INT = CAST(DATEPART(yy, GETDATE()) - 1 AS INT)

SELECT
    CASE WHEN CAST(DATEPART(yy, mq.[qDate]) AS INT)   = @ThisYear THEN 5
            WHEN CAST(DATEPART(yy, mq.[qDate]) - 1 AS INT) = @LastYear THEN 6 END AS 'TimePeriodID'
    ,Name = 'QueryTotals'
    ,SUM(CASE WHEN dQuery = 1 THEN 1 ELSE 0 END) AS 'DefaultQuery'
    ,SUM(CASE WHEN dQuery = 0 THEN 1 ELSE 0 END) AS 'Non-DefaultQuery'
    ,COUNT(dQuery) AS 'TotalQueries'
FROM 
    mQuery mq
INNER JOIN 
    mParameter mp
    ON
    mq.id = mp.id
INNER JOIN 
    Variable v
    ON
    mp.id = v.id
WHERE 
    v.id <= 10
GROUP BY
    CASE WHEN CAST(DATEPART(yy, mq.[qDate]) AS INT)   = @ThisYear THEN 5
            WHEN CAST(DATEPART(yy, mq.[qDate]) - 1 AS INT) = @LastYear THEN 6 END
声明
@ThisYear INT=CAST(日期部分(yy,GETDATE())为INT)
,@LastYear INT=CAST(DATEPART(yy,GETDATE())-1作为INT)
挑选
CASE-WHEN-CAST(DATEPART(yy,mq.[qDate])作为INT)=@thisnear 5
当强制转换时(DATEPART(yy,mq.[qDate])-1为INT)=@LastYear,然后6以'TimePeriodID'结束
,Name='QueryTotals'
,求和(当dQuery=1时为1,否则为0结束)为“DefaultQuery”
,求和(dQuery=0时为1,否则为0结束)为“非默认查询”
,将(dQuery)计数为“TotalQueries”
从…起
mQuery mq
内连接
M参数mp
在…上
mq.id=mp.id
内连接
变量v
在…上
mp.id=v.id
哪里

v、 id这种说法的组合:

DECLARE
    @ThisYear INT = CAST(DATEPART(yy, GETDATE()) AS INT) 
    ,@LastYear INT = CAST(DATEPART(yy, GETDATE()) - 1 AS INT)

SELECT
    CASE WHEN CAST(DATEPART(yy, mq.[qDate]) AS INT)   = @ThisYear THEN 5
            WHEN CAST(DATEPART(yy, mq.[qDate]) - 1 AS INT) = @LastYear THEN 6 END AS 'TimePeriodID'
使得第二个案例不可能是真的。如果第一个演员@今年,第二组演员(第一组-1)不可能是去年,因为去年是今年-1


这就是原因。解决方案不清楚,因为您没有显示您正在尝试做什么。

谢谢您,先生!这让我快发疯了。更改为:
CASE YEAR(mq.[qDate]),当@ThisYear时,当@LastYear时,则当@LastYear时,则当@TimePeriodID结束时,则当@6结束时,则为'TimePeriodID'
,并且有效。我知道这是一些基本的东西。