FOR XML SQL Select ステートメントへのテキストの追加
-
26-09-2019 - |
質問
SQL 初心者からこんにちは。
私は3を持っています Select
参加したいステートメント:
選択 2 は、 FOR XML
追加するものを選択します ヘッダー/フッターの一種として 1 と 3 (テキストを表示するだけ) を選択します。
3 つの選択はすべて意図したとおりに機能し、適切に形成されたポッドキャスト .xml の 3 つの部分を形成しますが、最終的に .xml ファイルに保存できるように、最終的に 1 つの結果になるようにする必要があります (これが次の悩みどころになると思います) )。
の順列を試してみました +
, UNION
, 、 そして JOIN
私の未熟な頭では思いつきますが、役に立ちません。
#1 を選択します (テキストのみ)
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>© 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 & Spirituality">
<itunes:category text="Christianity" />
</itunes:category>
<itunes:explicit>No</itunes:explicit>
<ttl> 120 </ttl>'
#2 (私のデータ) を選択します
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
#3 を選択 (テキストを追加)
Select '</channel>
</rss>'
(私はMS SQLSMS 2008を使用しています。)(2番目のSelectステートメントの複雑な性質は、最初に「フラット化されなければならない」「ユーザー定義のテーブル/フォームとリスト」からデータを取得しているという事実によるものです。)
助けていただければ幸いです。ありがとうございます。
解決
Declare @V1 VarChar(Max), @V2 VarChar(Max), @V3 VarChar(Max)
Select @V1 = ...
Set @V2 = (Select ...)
Select @V3 = ...
Select @V1+@V2+@V3
また、XMLに#1、#3をキャストします。
所属していません StackOverflow