2016-06-27 12 views
0

これをSQL Server 2008の適切な形式で入手するにはどうすればよいですか?SQLでselect caseを使用して2つの条件で注文する

CREATE PROCEDURE dbo.GetCustomerFleetList_C   
(  
@FilterBy NVARCHAR(200),   
@CustCode NVARCHAR(30)   
)   
AS   

SELECT 
    CASE @FilterBy 
    WHEN 'UnitNo' THEN UnitNo 
    WHEN 'EquipmentType' THEN EquipmentType 
    WHEN 'Registration' THEN Registration 
    WHEN 'EquipmentTypeModel' THEN EquipmentType + ' - ' + Model 
    ELSE NULL 
    END as 'Items' 
    FROM EcommerceCustomerFleet_C 
    WHERE CustomerCode = @CustCode 
    GROUP BY  CASE @FilterBy 
    WHEN 'UnitNo' THEN UnitNo 
    WHEN 'EquipmentType' THEN EquipmentType 
    WHEN 'Registration' THEN Registration 
    WHEN 'EquipmentTypeModel' THEN EquipmentType + ' - ' + Model 
    ELSE NULL 
    END 
ORDER BY 
    CASE @FilterBy 
    WHEN 'UnitNo' THEN LEN(UnitNo) 
    WHEN 'EquipmentType' THEN EquipmentType 
    WHEN 'Registration' THEN Registration 
    WHEN 'EquipmentTypeModel' THEN EquipmentType + ' - ' + Model END 
GO 

問題は、このラインWHEN 'UnitNo' THEN LEN(UnitNo), UnitNo

+0

これで何をしようとしていますか?合体? – ZLK

+0

ストアドプロシージャを作成しようとしています。基本的に私が 'WHEN 'UnitNo' THEN(LEN(UnitNo)、UnitNo)'でしようとしているのは、項目が 'VARCHAR'のときに適切な数値リストを作成することです。これは私のために働いています、私は 'CASE'ステートメントでそれを実装する正しい方法について確信していません –

+0

ああ、あなたは2つのもので注文しようとしていますか?その場合は、そこに1つ入れ、別のorder by節で別のものを入れます。例えば'WHEN 'UnitNo' THEN LEN(UnitNO)... 'の後ろに' CASE WHEN @FilterBy =' UnitNo 'THEN UnitNo END'が続きます。 – ZLK

答えて

1

にあるおそらくあなたは、第一フィールドにソート

Select KeySort = CASE @FilterBy 
        WHEN 'UnitNo' THEN (LEN(UnitNo), UnitNo) 
        WHEN 'EquipmentType' THEN EquipmentType 
        WHEN 'Registration' THEN Registration 
        WHEN 'EquipmentTypeModel' THEN EquipmentType + ' - ' + Model 
        ELSE NULL 
        END 
     ,{Other Fields} 
From SomeTable 
Order By 1,SomeOtherField,PerhapsAnother Desc 
+0

??? (LEN(UnitNo)、UnitNo) –

0

を移動することができます私が何を求めていることはとてもソートする方法だと思います「9」の後に来ます'11' ??それをVARCHARSと混ぜてください。そうであれば、これらは '000009'や '000011'のように変更する必要があります。 So:

 WHEN 'UnitNo' THEN REPLICATE('0', 6 - LEN(UnitNo)) + UnitNo 
関連する問題