質問

私は次のような属性を持つ2つのテーブルを持っています date(datetime),headline(varchar),text(text)

ここで、これら2つのテーブルすべてを結合し、DateTimeで並べ替えたいと思います。これを行うとき、私はエラーを取得します:

テキストポインターのみが、テキスト、ntext、または画像列ではない作業テーブルで許可されています。クエリプロセッサは、ワークテーブルにテキスト、nText、または画像列を必要とするクエリプランを作成しました。

前後に試した後、エラーを引き起こしているのはテキスト属性であることがわかりました。しかし、何をすべきか?私は成功せずにVarcharにキャストを試みました。どちらのテーブルも、テキスト属性のテキスト形式を使用します。

また、注文を削除するときはすべて正常に機能します。何をすべきか?

元のSQLクエリは以下にありますが、上記の簡略化に返信することができます。

SELECT     id, datetime, author, headline, intro, text, type, toppriority,
           secondpriority, comments, companyid, '1' source 
FROM     Table1
UNION ALL
SELECT     AutoID AS id, Dato AS datetime,
           ID COLLATE SQL_Latin1_General_CP1_CI_AS AS author, NULL AS headline, 
           NULL AS intro, Notat COLLATE SQL_Latin1_General_CP1_CI_AS AS text,
           CAST(NotatTypeID AS VARCHAR) AS type,
           NULL AS toppriority, NULL AS secondpriority, NULL AS comments,
           Selskabsnummer AS companyid, '2' source 
FROM     Table2
WHERE     (NotatTypeID = '5') OR (NotatTypeID = '6')
ORDER BY datetime DESC

前もって感謝します

役に立ちましたか?

解決

これが一つの方法で、SUPクエリとして組合を実行し、その後結果を注文することです。

SELECT * FROM 
(
    SELECT     id, datetime, author, headline, intro, text, TYPE, toppriority,
            secondpriority, comments, companyid, '1' source 
    FROM     Table1
    UNION ALL
    SELECT     AutoID AS id, Dato AS datetime,
            ID COLLATE SQL_Latin1_General_CP1_CI_AS AS author, NULL AS headline, 
            NULL AS intro, Notat COLLATE SQL_Latin1_General_CP1_CI_AS AS text,
            CAST(NotatTypeID AS VARCHAR) AS TYPE,
            NULL AS toppriority, NULL AS secondpriority, NULL AS comments,
            Selskabsnummer AS companyid, '2' source 
    FROM     Table2
    WHERE     (NotatTypeID = '5') OR (NotatTypeID = '6')
) a
ORDER BY datetime DESC

他のヒント

インデックス内のいくつかのテキストフィールドにDateTimeフィールドをキャストするのはどうですか? 「DateTime」と「テキスト」をフィールド/エイリアス名として使用することは非常に混乱し、潜在的な問題のソースであることに注意してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top