2010-10-05 6 views
0

Im ayant deux tables avec des attributs comme date(datetime),headline(varchar),text(text)UNION ALL, champ texte et ORDER BY erreur

Maintenant, je veux UNION TOUTES ces deux tables et trier par le datetime. Quand vous faites cela, je reçois l'erreur:

Only text pointers are allowed in work tables, never text, ntext, or image columns. The query processor produced a query plan that required a text, ntext, or image column in a work table.

Après avoir essayé avant et en arrière, je trouve qu'il est l'attribut de texte qui est à l'origine de l'erreur. Mais que faire? J'ai essayé de lancer sur VARCHAR sans succès. Les deux tables utilisent le format texte dans l'attribut de texte.

Aussi lors de la suppression de la commande par tout cela fonctionne très bien. Que faire?

La requête SQL d'origine est ci-dessous, mais vous pouvez simplement répondre au simplifié ci-dessus.

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 

Merci à l'avance

+1

Quelle version de SQL, plate-forme, etc – Hogan

+0

Je pense que cette erreur est spécifique à SQL Server 2000 – MartW

+0

Il est SQL Server 2000 –

Répondre

0

Une façon ronde cela est de lancer le syndicat comme une requête sup et commander les résultats par la suite:

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 
0

Qu'en est-casting le champ datetime à un champ de texte dans l'index? Notez que l'utilisation de 'datetime' et de 'text' comme noms de champs/alias peut être assez déroutante et source de problèmes potentiels.

Questions connexes