Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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 Select语句时的大小写_Sql_Sql Server_Database - Fatal编程技术网

Sql Select语句时的大小写

Sql Select语句时的大小写,sql,sql-server,database,Sql,Sql Server,Database,每个名称至少有4个不同的td。当01或02附加到该姓名后,我想将td从该姓名的最新付款日期更改为td 但是,我不断得到一个NULL值。这个查询有什么问题 SELECT name, CASE WHEN td in ('01', '02') THEN (SELECT TOP 1 td WHERE td not in ('01', '02') ORDER BY paydate DESC)

每个名称至少有4个不同的
td
。当
01
02
附加到该姓名后,我想将
td
从该姓名的最新付款日期更改为
td

但是,我不断得到一个
NULL
值。这个查询有什么问题

SELECT
    name, 
    CASE WHEN td in ('01', '02') 
         THEN (SELECT TOP 1 td 
               WHERE td not in ('01', '02') 
               ORDER BY paydate DESC) 
         ELSE td 
    END
FROM tdtest

子查询中缺少from子句和相关条件

如果没有from子句,子select中的
td
与外部select中的
td
相同,换句话说,
'01'
'02'
中的一个和where子句测试消除该行,从而导致空值

SELECT
    name, 
    CASE WHEN td in ('01', '02') 
         THEN (SELECT TOP 1 td
               FROM TdTest InnerTDTest -- table to look in
               WHERE InnerTDTest.Name = TDTest.Name -- only look at matching rows.
               AND td not in ('01', '02') 
               ORDER BY paydate DESC) 
         ELSE td 
    END
FROM tdtest

是什么告诉您查询有问题?后果错误消息。。。?从技术上讲,我想这个问题没有错。但我总是得到一个空值。我想得到一个不同的td。你能发布一些示例数据吗?
CASE
在T-SQL中是一个返回一个原子值的表达式(如
a+b
),它不是一个语句,无法控制代码执行流等。