0

特定の列ごとに異なる値の順序で行を返すSQLクエリがあります。たとえば、locationidによる注文可能注文からbatchnoを識別したい。

私もグーグルを試しましたが、解決策を見つけることができません

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]

また

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

だからこれは私が試したものですが、運がありません。助けてください。

4

1 に答える 1

3

DISTINCTORDER BYリストにない式は許可されませんSELECT(この場合のように、式が個別の行ごとに1つの特定の値しか生成できない場合でも)。使用できます。

SELECT Batchno,
       LocationId
FROM   Ordertbl
GROUP  BY Batchno,
          LocationId
ORDER  BY CASE
            WHEN[LocationId] = 3 THEN 0
            ELSE 1
          END,
          [LocationId] 
于 2012-10-09T07:21:10.487 に答える