1

データベースでサブグループを取得し、asp.net のドロップダウン リストにバインドしようとしている SQL クエリがあります。データベース側では、MSSQL サーバー 2008 R2 を使用しており、以下のクエリがあります。

SELECT -1   ItemSubGroupId,
'Select Sub Group' AS ItemSubGroupName

    UNION

SELECT ItemSubGroupId,
ItemSubGroupName
FROM dbo.tblSetupItemSubGroup SG
WHERE SG.ItemMainGroupId = 17

結果は次のとおりです。 ソートなしの結果

今、すべてのサブグループを ItemSubGroupName で並べ替えたいと思います。並べ替えた後、次のような結果が得られます

     SELECT -1  ItemSubGroupId,
'Select Sub Group' AS ItemSubGroupName

    UNION

SELECT ItemSubGroupId,
ItemSubGroupName
FROM dbo.tblSetupItemSubGroup SG
WHERE SG.ItemMainGroupId = 17
ORDER BY ItemSubGroupName

ソート後

並べ替えた後、「サブグループの選択」の名前も表示どおりに並べ替えられました。「サブグループの選択」セクションなしで並べ替える方法はありますか?

4

5 に答える 5

0

追加の「ハードコードされた」列をクエリに追加して、それで並べ替えるだけです。

SELECT -1  ItemSubGroupId, 'Select Sub Group' AS ItemSubGroupName, 'A' OrderCol

UNION

SELECT ItemSubGroupId, ItemSubGroupName, 'B' OrderCol
FROM dbo.tblSetupItemSubGroup SG
WHERE SG.ItemMainGroupId = 17
ORDER BY OrderCol, ItemSubGroupName
于 2013-10-04T04:27:44.537 に答える
0

最も簡単な方法は、CASEステートメントを使用することですORDER BY

...
ORDER BY
    CASE WHEN ItemSubGroupName = 'Select Sub Group' 
        THEN 0 
        ELSE 1 END
于 2013-10-04T04:31:33.400 に答える
0

ダミー列tagを追加して順序付けを行い、派生テーブルを使用できます。tag最終的な結果セットで列ごとに順序を取得する必要はありません。

SELECT ItemSubGroupId,ItemSubGroupName
FROM
(
 SELECT -1  ItemSubGroupId,
'Select Sub Group' AS ItemSubGroupName, 1 as tag

    UNION

SELECT ItemSubGroupId, 
ItemSubGroupName,2 as tag
FROM dbo.tblSetupItemSubGroup SG
WHERE SG.ItemMainGroupId = 17
) z
ORDER BY tag,ItemSubGroupName

上記のコードでは、エイリアス名を派生テーブルに与えることを忘れないでください。そうしないとz、SQL サーバーによって構文エラーがスローされます。

于 2013-10-04T04:25:29.323 に答える