我需要寫一些SQL在表中,我選擇了寫的一些數據,然後排序和/或過濾器。這裏有一個大大簡化例子...SQL如何通過寫上 過深重的數據對這些數據的數據,然後排序或篩選
我有滿滿一桌子的寵物的名字叫做PET
PET_NAME PET_SPECIES PET_PK
---------- ----------- -----------
Barney Dog {PETGUID1}
Fergus Cat {PETGUID2}
Meatball Hamster {PETGUID3}
我已經保存他們的生活狀態的另一個表稱爲生命
LIF_PK LIF_STATUS LIF_PET_FK
---------- ------------ ------------
{LIFGUID1} Alive {PETGUID1}
{LIFGUID2} Alive {PETGUID2}
{LIFGUID3} Dead {PETGUID3}
我想報告寵物和他們的生活狀態。
SELECT PET_NAME,
PET_SPECIES,
LIF_STATUS
FROM PET
INNER JOIN LIFE ON LIF_PET_PK=PET_PK
那裏的寵物死了,我不想報告名稱,只是有'DEADPET'代替。
太多的回憶。 然後我想按寵物名稱排序。
我以爲我可以創建一個代理變量,然後將其設置爲寵物的名字只有當寵物還活着例如 case語句......
DECLARE @petName nvarchar(18)
SELECT @petName=(CASE LIF_STATUS='Alive' THEN PET_NAME ELSE 'DEADPET' END),
PET_SPECIES,
LIF_STATUS
FROM PET
INNER JOIN LIFE ON LIF_PET_PK=PET_PK
ORDER BY @petName
但我不能這樣做,TSQL不會允許它。
當然,在現實中,這有什麼好做寵物是所有做與金融貸款{肉丸的生命!} 但原理是一樣的。
任何幫助,我可以不用它,將不勝感激,謝謝提前。
想,如果你嘗試過(CASE LIF_STATUS =「活着」,然後PET_NAME ELSE「DEADPET」它的工作END)作爲「ABCD」,然後是「ABCD」的ORDER BY – uchamp 2013-03-19 10:21:17
也許就是這樣。我不得不使用(CASE LIF_STATUS當'死'然後死'其他'PET_NAME END),因爲TSQL抱怨我用於比較等號,但這可能是答案。 – 2013-03-19 10:45:39
讓我知道如果這工作,我會張貼它作爲答案:) – uchamp 2013-03-19 10:59:16