如何以适当的SQL Server 2008格式获取此内容?
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 :(得分: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
答案 1 :(得分:0)
我认为你问的是如何排序所以'9'来自'11'之后?并将其与VARCHARS混合使用。如果是这种情况,则需要将这些更改为“000009”和“000011”。所以:
WHEN 'UnitNo' THEN REPLICATE('0', 6 - LEN(UnitNo)) + UnitNo