プロシージャに渡されるパラメータの1つに応じて、整数列またはvarchar
列のいずれかでソートする必要があるストアドプロシージャ内のクエリがあります。ORDER BY <intまたはvarchar>
私は私のORDER BY
句としてこれを持っている:私は、クエリを実行しようと
ItemName ItemCode SubItemName SubItemCode
Apple AA1 Fuji FJ1
Apple AA1 Gala GL1
Chicquita 1
DelMonte 2
Plantain -1
Orange OR1 Satsuma SS3
Orange OR1 Valencia VL2
:明確にするために
...
ORDER BY
CASE @ReportType
WHEN 1 THEN
ItemName + SubItemName
WHEN 2 THEN
ItemName + SubItemName
WHEN 3 THEN
SubItemName
WHEN 4 THEN
CONVERT(int,ItemCode)
ELSE
ItemName
END
、私のテーブル構造は、この(無関係の列は省略)のようなものです1,2,4のように@ReportTypeはすべて動作しますが、3を渡すとエラーが発生します:
Conversion failed when converting the varchar value 'Orange' to data type int.
これは、ORDER BY
節のすべてのケースが同じデータ型を持つ必要があるためです。私はvarchar型にすべてを変換することができ知っているが、私はCONVERT(varchar,ItemCode)
でソートすれば、私はファンキーな順序を取得:
Chicquita 1
Plantain -1
DelMonte 2
それはいくつかのケースではvarchar型のフィールドでソートすることが可能であるが、他の例では整数を?
どのdbmsを使用していますか? – jarlh
SQL Server 2008R2を使用するSMSS。 – Echilon