---
title: "Komplicerad Order By Case"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/114883-komplicerad-order-by-case"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "erka"
published: "2004-11-01T16:49:30.000Z"
updated: "2004-11-01T17:48:48.000Z"
replies: 4
views: 242
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/114883-komplicerad-order-by-case"
---

# Komplicerad Order By Case

## #1 — erka, 2004-11-01T16:49Z

Hej

Jag har idag en sqlfråga som ser ut på följande sätt

```
SELECT Pk_MenuItemId, Fk_MenuId, NavigateUrl, NavigateText, ParentMenuItemId FROM  PageMenuItems 
WHERE Fk_MenuId = @menuId 
Order by case when ParentMenuItemId = 0 then Pk_MenuItemId 
Else ParentMenuItemId end,ParentMenuItemId
```

@menuId innehåller en integer som skickas in. Som det är nu sorteras menyerna så att om en meny har något ParentMenuItemId kommer den ut efter den menyn med idt som står i ParentMenuItemId. Går det via sql få så att den sortera på bokstavsordning, alltså att den först sorterar alla menyer med ParentMenuItemId = 0 i bokstavsordning och sedan undermenyerna under respektive meny  med idt i ParentMenuItemId.

Permalänk: https://www.webforum.nu/p/114883

## #2 — LarsG, 2004-11-01T17:28Z

Om jag nu har förstått rätt

```
SELECT Pk_MenuItemId, Fk_MenuId, NavigateUrl, NavigateText, ParentMenuItemId ,
case when parentMenuId = 0 then <nameOfMenuItem>
else (select <nameOfMenuItem> from PageMenuItems
where Fk_MenuId = @menuId 
  and Pk_MenuItemId = pm.parentMenuItemId) as n
FROM  PageMenuItems pm
WHERE Fk_MenuId = @menuId 
Order by n,ParentMenuItemId
```

principiellt (ur SQL-synpunkt) så går det att stoppa in den case som nu ligger i select-listan direkt i order by men jag har för mig att sql server inte blir så förtjust då.

Permalänk: https://www.webforum.nu/p/1474391

## #3 — erka, 2004-11-01T17:43Z

Tack, får dock incorrect syntax near the keyword 'AS'. Vad jag vill göra är att hämta alla där ParentMenuItemId = 0 (med ett visst Fk_MenuId) efter bokstavsordning, direkt under varje med ParentMenuItemId = 0 ska det komma de som har samma ParentMenuItemId som "den jag är pås Pk_MenuItemId.

Permalänk: https://www.webforum.nu/p/1474395

## #4 — LarsG, 2004-11-01T17:46Z

Glömde ett end efter case

```
case when parentMenuId = 0 then <nameOfMenuItem>
else (select <nameOfMenuItem> from PageMenuItems
where Fk_MenuId = @menuId 
  and Pk_MenuItemId = pm.parentMenuItemId) end as n
```

Permalänk: https://www.webforum.nu/p/1474398

## #5 — erka, 2004-11-01T17:48Z

Det fungerade, tror jag hajjar hur det fungerar nu också, stort tack LarsG, ännu en gång :) Trevlig fortsättning på kvällen

Permalänk: https://www.webforum.nu/p/1474401

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/114883-komplicerad-order-by-case
