Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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 选择时在案例中处理顶部_Sql Server - Fatal编程技术网

Sql server 选择时在案例中处理顶部

Sql server 选择时在案例中处理顶部,sql-server,Sql Server,我在使用TOP解决选定案例时遇到问题 我是不是应该说我对这件事很陌生 我想填写两个表中的一列信息: 表1:第1列包含我想要使用的数据 表1:第2列是一个联接 表2:第1列包含我想要使用的数据 表2:第2列是一个连接 因此: 表1第1列包含字母D、M和T以及空格 表2第1列包含单词“转鼓”“传输”“交付” 我尝试使用以下条件填充我的列: 当列T1.C1包含D、M或T时,写入D M或T。 当列T1.C1为空时,请查看列T2.C1: 如果T1.C1列包含“转鼓”,则写“R” 否则不要写任何东西 对我来

我在使用TOP解决选定案例时遇到问题

我是不是应该说我对这件事很陌生

我想填写两个表中的一列信息:

表1:第1列包含我想要使用的数据

表1:第2列是一个联接

表2:第1列包含我想要使用的数据

表2:第2列是一个连接

因此:

表1第1列包含字母D、M和T以及空格

表2第1列包含单词“转鼓”“传输”“交付”

我尝试使用以下条件填充我的列:

当列T1.C1包含D、M或T时,写入D M或T。 当列T1.C1为空时,请查看列T2.C1: 如果T1.C1列包含“转鼓”,则写“R” 否则不要写任何东西 对我来说,事情很快变得糟糕,因为我想要从B栏获得的信息需要一个顶部才能使用

到目前为止,我能得到的最好结果是关键字“LIKE”附近的语法不正确

这是到目前为止我的代码。有什么建议吗

SELECT (
    CASE T1.C1
        WHEN 'D' THEN 'D'
        WHEN 'M' THEN 'M'
        WHEN 'T' THEN 'T'
        WHEN (
            SELECT TOP 1 T2.C1 
            FROM T2 
            WHERE T1.C2=T2.C2
        ) LIKE 'ROLLS' THEN 'R'
       ELSE ''
    END) AS my_data
FROM T1
像这样改变你的陈述。您已将输入表达式与搜索的大小写表达式混合


你的问题并不完全清楚,但我认为你可以简化它,完全删除子查询

SELECT 
CASE
    WHEN LEFT(T1.C1 + T2.C1, 1) = 'R' THEN 'R'
    ELSE T1.C1
END AS MyData 
FROM T1

这里要小心。您正在使用TOP,没有订购人。无法保证子选择将使用什么顺序,因此您无法知道前1名是什么。感谢您的解释。效果很好。非常感谢。当心顶部,不要随意下单。您应该添加一个order by,这样您就可以知道您得到的是哪行值。@Adrien-Sean lange没有out order by是最上面的1,这没有任何意义。我今天下午无法让它工作。那太糟糕了,我真的很喜欢你的答案。我明天再试一次。非常感谢。你收到错误消息了吗?它不是做了正确的事情吗?我可以帮忙,但仅仅说它不起作用并不能给我提供帮助所需的信息。
SELECT 
CASE
    WHEN LEFT(T1.C1 + T2.C1, 1) = 'R' THEN 'R'
    ELSE T1.C1
END AS MyData 
FROM T1