在包含列数据类型(如ntext)的连接查询中从一个表中获取不同的值

我有两个表 ReviewProjectsReview。我想按列更改顺序而不影响结果。最初的订单是来自审查表的createdDate列。 初始查询如下。在包含列数据类型(如ntext)的连接查询中从一个表中获取不同的值

SELECT 

*

FROM Review r

WHERE (status IS NULL

OR fstatus = '')

AND (crBy = '100'

OR crByPr = '')

ORDER BY createdDate

该查询返回8行。

用户想通过使用另一个表中的程序名称来更改顺序。查询得到相同的如下。

SELECT 

r.*

FROM Review r

INNER JOIN ProjectsReview rp

ON rp.rID = r.rID

WHERE (status IS NULL

OR fstatus = '')

AND (crBy = '100'

OR crByPr = '')

ORDER BY prNo, prName

返回10行。但所需的结果只有8行,只有评论表的列。 由于存在具有图像和ntext的数据类型,因此我无法在Review表中的所有列上应用group by。 有没有办法实现这一点,而无需将数据插入临时表并获取不同的值。

回答:

试试这个

with cte 

as

(

select

rn = row_number() over(partition by rID order by prNo,prName),

rID,

prNo,

prName

from ProjectsReview

)

SELECT r.*

FROM Review r

inner join cte rp on rp.rID =r.rID

WHERE (status IS NULL OR fstatus = '') AND (crBy = '100' OR crByPr = '')

and cte.rn = 1

ORDER BY prNo,prName

以上是 在包含列数据类型(如ntext)的连接查询中从一个表中获取不同的值 的全部内容, 来源链接: utcz.com/qa/261890.html

回到顶部