我有sql查询,其中我希望按特定列返回具有不同值顺序的行。 比方说,我想通过locationid从ordertable order中解读batchno。
我也试过谷歌,但无法找到解决方案
ORDER BY items must appear in the select list if SELECT DISTINCT is specified.
我每次尝试时得到的东西。
当不使用distinct我得到输出但使用此查询重复行
Select Batchno,LocationId from Ordertbl order by case when[LocationId] =3 THEN 0 ELSE 1 END, [LocationId]
如果我使用distinct它会给我错误这些是我试过的查询。
Select distinct CAST(Batchno as Varchar(MAX)),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],[Batchno]
所以这是我尝试的东西,但没有运气。请帮助我。
答案 0 :(得分:3)
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]