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” 否则不要写任何东西 对我来说,事情很快变得糟糕,因为我想要从B栏获得的信息需要一个顶部才能使用 到目前为止,我能得到的最好结果是关键字“LIKE”附近的语法不正确 这是到目前为止我的代码。有什么建议吗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” 否则不要写任何东西 对我来
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