如果指定了 SELECT DISTINCT,则 ORDER BY 项必须出现在选择列表中

2023-12-25

我有 sql 查询,其中我希望按特定列返回具有不同值顺序的行。 就像说的,我想通过locationid将batchno与ordertable订单分开。

我也尝试过谷歌但无法找到解决方案

ORDER BY items must appear in the select list if SELECT DISTINCT is specified.

这就是我每次尝试时得到的。

当不使用不同时,我得到输出,但使用此查询有重复的行

Select Batchno,LocationId from Ordertbl order by case when[LocationId] =3 THEN 0 ELSE 1 END, [LocationId]

如果我使用不同的它会给我错误这些是我尝试过的查询。

Select distinct CAST(Batchno as Varchar(MAX)),LocationId from Ordertbl order by case when[LocationId] =3 THEN 0 ELSE 1 END,[LocationId]

or

Select distinct CAST(Batchno as Varchar(MAX)),LocationId from Ordertbl order by case when[LocationId] =3 THEN 0 ELSE 1 END,[LocationId],[Batchno]

所以这是我尝试过的事情,但没有运气。请帮助我。


DISTINCT不允许任何表达式ORDER BY这也不在SELECT列表(即使在本例中,表达式只能为每个不同的行生成一个特定值)。您可以使用。

SELECT Batchno,
       LocationId
FROM   Ordertbl
GROUP  BY Batchno,
          LocationId
ORDER  BY CASE
            WHEN[LocationId] = 3 THEN 0
            ELSE 1
          END,
          [LocationId] 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果指定了 SELECT DISTINCT,则 ORDER BY 项必须出现在选择列表中 的相关文章

随机推荐