0
私は以下のコードを持っており、それがいずれかの集計に含まれていないので、私はそれを実行したとき、私はエラーを取得するテキストデータ型の問題
コラム「Orders.User_Memo1は、」ORDER BY句では無効ですテキスト、ntext型、およびIMAを
:句
BY関数またはGROUPだから、私は
o.User_Memo1
を追加(または単にCONVERT(VARCHAR(MAX)
を削除します)と私は、次のエラーメッセージが表示されますIS NULLまたはLIKE演算子を使用している場合を除いて、比較またはソートすることはできません。
基本的にスタックされていますCONVERTを使用するとすべてエラーが表示されます。私の選択肢は何ですか?
SELECT
CAST(o.OrderNo AS INT) AS [OrderNo],
CONVERT(VARCHAR(MAX), CAST(SUBSTRING(od.User_Memo1,
CHARINDEX('Pack',od.User_Memo1)+5, 8) AS DATE), 1) AS [Prod Due Date],
o.User_Date1 AS [3 Week Ack Date],
o.User_Date2 AS [1 Week Ack Date],
CASE
WHEN CONVERT(VARCHAR(MAX), o.User_Memo1) LIKE '%RDS%'
THEN CONVERT(VARCHAR(MAX), CAST(SUBSTRING(od.User_Memo1, CHARINDEX('RSD', od.User_Memo1) + 4, 8) AS DATE), 1)
ELSE NULL
END AS [Revised Ship Date],
d.ShipDate
FROM
Orders o
JOIN
OrderDet od ON o.OrderNo = od.OrderNo
LEFT JOIN
DelTicket d ON o.OrderNo = d.OrderNo
WHERE
CONVERT(VARCHAR(MAX), o.User_Memo1) IS NOT NULL
AND SUBSTRING(o.User_Memo1, 1, 3) = 'Cut'
GROUP BY
o.OrderNo,
CONVERT(VARCHAR(MAX), CAST(SUBSTRING(od.User_Memo1, CHARINDEX('Pack', od.User_Memo1) + 5, 8) AS DATE), 1),
o.User_Date1, o.User_Date2,
CONVERT(VARCHAR(MAX), o.User_Memo1), CONVERT(VARCHAR(MAX), CAST(SUBSTRING(od.User_Memo1, CHARINDEX('RSD', od.User_Memo1) + 4, 8) AS DATE),
1),
d.ShipDate
ORDER BY
CAST(SUBSTRING(o.User_Memo1, CHARINDEX('Pack',o.User_Memo1) + 5, 8) AS DATETIME) DESC;
にそれを変更してみてください。もっと説明しようとする必要があります。 – scsimon
私が見ている相違点は、 'Group By 'のあなたのキャスティングを' Order By 'の' Date'としてキャストして、あなたのキャストを 'DateTime'としてキャストすることです。また、 'Group By'では' OrderDet'テーブルではなく 'od.User_Memo1'テーブルを指定しています。 –
'ntext'、' text'、および 'image'データ型は、将来のバージョンのSQL Serverでは削除されます。新しい開発作業でこれらのデータ型を使用しないようにし、現在使用しているアプリケーションを変更することを計画します。代わりに 'nvarchar(max)'、 'varchar(max)'、 'varbinary(max)'を使用してください。 [詳細はこちら](http://msdn.microsoft.com/en-us/library/ms187993.aspx) –