Ich möchte Liste der Namen der Parteien mit der ersten Option als "Alle" aus der Datenbank. aber ich werde nicht 'All' in Database einfügen, braucht nur Zeit abzurufen. also habe ich diese abfrage geschrieben.
Select 0 PartyId, 'All' Name
Union
select PartyId, Name
from PartyMst
Das ist mein Ergebnis
0 All
1 SHIV ELECTRONICS
2 AAKASH & CO.
3 SHAH & CO.
wenn ich order by Name
verwende, wird unter dem Ergebnis angezeigt.
2 AAKASH & CO.
0 All
3 SHAH & CO.
1 SHIV ELECTRONICS
Ich möchte aber die 1. Option als "Alle" und dann eine Liste der Parteien in sortierter Reihenfolge. Wie kann ich das tun?
Sie müssen eine Unterabfrage mit CASE
in der ORDER BY
-Klausel wie folgt verwenden:
SELECT * FROM
(
Select 0 PartyId, 'All' Name
Union
select PartyId, Name
from PartyMst
) tbl
ORDER BY CASE WHEN PartyId = 0 THEN 0 ELSE 1 END
,Name
Ausgabe:
| PARTYID | NAME |
------------------------------
| 0 | All |
| 2 | AAKASH & CO. |
| 3 | SHAH & CO. |
| 1 | SHIV ELECTRONICS |
Sie können 'order by' mit der obersten Anweisung in einer Union folgendermaßen verwenden:
Select 0 PartyId, 'All' Name
Union
select * from (
select top (select count(*) from PartyMst) PartyId, Name
from PartyMst
order by Name
)
Da Sie ohnehin hardcoding 0 sind, fügen Sie einfach ein Leerzeichen vor dem All ein
Select 0 PartyId, ' All' Name
Union
select PartyId, Name
from PartyMst
ORDER BY Name
Raj