Pregunta

Hola desde una nO0b SQL, España     Tengo tres declaraciones Select Quiero unirme a:

Selecciona 2 es una FOR XML Seleccionar para el cual quiero añadir Selecciona 1 y 3 (que simplemente muestra parte del texto) como un tipo de encabezado / pie de página.

Los tres Selecciona funciona como es debido y forman tres partes de un .xml de podcast muy bien formada, pero necesito que terminan en uno de los resultados por lo que con el tiempo puede guardar en un archivo .xml (que será mi próximo dolor de cabeza , Supongo).

He tratado de permutaciones de +, UNION y JOIN que mi mente sin experiencia puede llegar a, pero fue en vano.

Seleccionar # 1 (sólo texto)

Select  '<?xml version=''1.0''?>
<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"  xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
      <atom:link href="http://www.mysite.com/podcast/podcast.xml" rel="self" type="application/rss+xml" />
  <itunes:image href="http://www.mysite.com/Portals/0/Images/Audio/podcast_logo.jpg"/>
  <link>http://www.mysite.com/Audio.aspx</link>
<title>My Podcast</title>
<description>My Podcast's Description</description>
<language>en-us</language>
<copyright>&#xA9; 2010</copyright>
      <itunes:subtitle>Subtitle</itunes:subtitle>
      <itunes:owner>
        <itunes:name>Name</itunes:name>
        <itunes:email>user@domain.com</itunes:email>
      </itunes:owner>
      <itunes:category text="Religion &amp; Spirituality">
        <itunes:category text="Christianity" />
      </itunes:category>
      <itunes:explicit>No</itunes:explicit>
      <ttl> 120 </ttl>'   

Seleccionar # 2 (mis datos)

Select 
(Select Cast(FieldValue as nvarchar(max)) from dbo.UserDefinedData where UserDefinedFieldId = 305 and UserDefinedRowId = item.UserDefinedRowId) as [title]
,(Select 'Today''s Program is ' + Cast(FieldValue as nvarchar(max)) from dbo.UserDefinedData where UserDefinedFieldId = 305 and UserDefinedRowId = item.UserDefinedRowId) as [description]  
,(Select Cast(Cast(FieldValue as nvarchar(max)) as DateTime) from dbo.UserDefinedData where UserDefinedFieldId = 306 and UserDefinedRowId = item.UserDefinedRowId) as [pubdate]
,(Select 'http://www.mysite.com/Portals/0/AudioFiles/RadioArchives/' + Cast(FieldValue as nvarchar(max)) from dbo.UserDefinedData where UserDefinedFieldId = 308 and UserDefinedRowId = item.UserDefinedRowId) as [guid]
 From 
dbo.UserDefinedRows item
 Where 
ModuleId = 820
 and UserDefinedRowID in (select UserDefinedRowID from UserDefinedData where UserDefinedFieldID = 306 and Cast(Cast(FieldValue as nvarchar(max)) as DateTime) between '2010-Nov-11' and '2010-Nov-18') 
 Order By 
[pubdate] DESC
for XML AUTO,ELEMENTS

Seleccionar # 3 (más texto)

Select '</channel>
</rss>'

(estoy usando MS SQLSMS 2008.) (La naturaleza compleja de la segunda instrucción de selección se debe al hecho de que se está recuperando datos de una DotNetNuke "definido por el usuario Tabla / Formulario y lista", que éste debe "aplanado".)

Cualquier ayuda se agradece, gracias.

¿Fue útil?

Solución

Declare @V1 VarChar(Max), @V2 VarChar(Max), @V3 VarChar(Max)

Select @V1 = ...

Set @V2 = (Select ...)

Select @V3 = ...

Select @V1+@V2+@V3

Por otra parte, echó # 1 y # 3 a XML.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top