我在使用TOP解决SELECT CASE时遇到问题。
我应该提一下我对此很新吗? :d 这也是我在Stackoverflow上的第一篇文章。嗨!
我想从两个表中填写一列信息:
表1:第1列包含我想要使用的数据
表1:第2列是连接
表2:第1列包含我想要使用的数据
表2:第2列是连接
所以:
表1第1列包含字母(D M和T)和空格。
表2第1列包含单词('Rolls''转移''交付')
我正在尝试使用以下条件填充我的专栏:
对我来说,事情变得非常快,因为我想从B栏中获取的信息需要使用TOP。
关键词'来自'附近的语法语法不正确。
到目前为止,这是我的代码。 有什么建议吗?
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)
THEN 'R'
ELSE
''
END) as my_data,
FROM T1
答案 0 :(得分:0)
我认为你应该尝试找到一种更简单的方法来写这个:
WITH cte
AS ( SELECT C1 ,
C2 ,
ROW_NUMBER() OVER ( PARTITION BY C2 ORDER BY col ) rn
FROM Table2
)
SELECT CASE WHEN T1.C1 = '' THEN LEFT(T2.C1, 1)
ELSE T1.C1
END AS my_data
FROM Table1 T1
LEFT OUTER JOIN cte T2 ON T1.C2 = T2.C2
AND T2.rn = 1
您尚未发布表架构,因此可能需要进行调整。