[英]Get Distinct values from one table in a join query containing column data type like ntext
我有两个表Review
和ProjectsReview
。 我想按列更改顺序,而不会影响结果。 最初的订单依据是评论表中的createdDate
列。 初始查询如下。
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行,而只有列的复查表。 由于存在带有image和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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.