मैंने सोचा कि आप किसी पूर्णांक पर पैरामीटर को बदल सकता है, और प्रकार है कि क्रमसूचक साथ कॉलम के आधार पर:
CREATE PROCEDURE [dbo].[CLICK10_GetCP]
@ordinal AS INT
AS
BEGIN
SELECT
acct_nbr,
acct_name
FROM
acct
ORDER BY @Ordinal
END
GO
यह एक अच्छा त्रुटि फेंकता (SQL2005):
संदेश 1008, स्तर 16, राज्य 1, पंक्ति 4 का चयन करें आइटम नंबर 1 द्वारा आदेश द्वारा की पहचान कॉलम स्थिति की पहचान करने वाली अभिव्यक्ति के हिस्से के रूप में एक चर है। वेरिएबल्स केवल को अभिव्यक्ति द्वारा ऑर्डर करते समय कॉलम नाम का संदर्भ देते हैं।
Googling के आसपास पाया this solution here (SQL 2005 और ऊपर):
CREATE PROCEDURE [dbo].[CLICK10_GetCP]
@switch AS BIT
AS
BEGIN
SELECT
acct_nbr,
acct_name
FROM
acct
ORDER BY CASE
WHEN @switch = 0 THEN (RANK() OVER (ORDER BY acct_nbr, acct_name))
WHEN @switch = 1 THEN (RANK() OVER (ORDER BY acct_name, acct_nbr))
END
GO
यह केवल तब काम करता है जब फ़ील्ड 1 और फ़ील्ड 2 एक ही प्रकार के होते हैं। – edosoft
आप इसे एक केस अभिव्यक्ति के रूप में लिख सकते हैं ... केस जब @ स्विच = 0 तब फ़ील्ड 1 जब @ स्विच = 1 फिर फ़ील्ड 2 अंत – pjp
यदि प्रत्येक केस में एक ही थ्रू क्लॉज है, तो आपको चिंता करने की आवश्यकता नहीं है कि फ़ील्ड किस प्रकार हैं कर रहे हैं। –