Как я могу написать этот код SQL в то время как цикл, чтобы получить результаты XML в одну строку вместо 3 отдельных строк?

Для других на этой странице, интересующихся, что такое правильный синтаксис (как и я) для явной специализированности шаблонов (или, по крайней мере, в VS2008), его следующее ...

В вашем .h-файле. ..

template<typename T>
class foo
{
public:
    void bar(const T &t);
};

И в вашем .cpp файле

template <class T>
void foo<T>::bar(const T &t)
{ }

// Explicit template instantiation
template class foo<int>;
0
задан Shnugo 20 January 2019 в 10:02
поделиться

1 ответ

Это может быть диким предположением, но у меня есть ощущение, что я понимаю, о чем это:

, если вы запустите код, вы увидите результат. входные данные не нужны. Я просто хочу, чтобы структура результата xml была на одной строке для одного набора каждого цикла

Ваш код приводит к этому:

<Loans>
  <Loan>
    <LoanNumber>Complaint10-Call1</LoanNumber>
    <LoanStatus>Compliants</LoanStatus>
    <LoanStatusDate>2019-01-22</LoanStatusDate>
  </Loan>
  <Loan>
    <LoanNumber>Complaint10-Call2</LoanNumber>
    <LoanStatus>Compliants</LoanStatus>
    <LoanStatusDate>2019-01-22</LoanStatusDate>
  </Loan>
  <!-- more of them-->
</Loans>

Это прекрасно хорошо, действительный XML.

Но вы хотите, чтобы результат

был на одной строке для одного набора каждого цикла

Что-то вроде этого?

<Loans>
  <Loan>
    <LoanNumber>Complaint10-Call1</LoanNumber><LoanStatus>Compliants</LoanStatus><LoanStatusDate>2019-01-22</LoanStatusDate>
  </Loan>
  <!-- more of them-->
</Loans>

Я думаю, что существует большое заблуждение ... XML - это не то, что вы видите . Один и тот же XML может выглядеть совершенно по-другому, без какой-либо семантической разницы:

Проверьте это:

DECLARE @xmltable table(SomeXml XML)
INSERT INTO @xmltable VALUES
                        --the whole in one line
                        ('<root><a>test</a><a>test2</a></root>')

                        --all <a>s in one line
                       ,('<root>
                          <a>test</a><a>test2</a>
                          </root>')

                       --each element in one line
                       ,('<root>
                          <a>test</a>
                          <a>test2</a>
                          </root>')

                       --white space going wild...
                       ,('<root>
                                                <a>test</a>
    <a>test2</a>
                                         </root>');

--now check the results                                          
SELECT * FROM @xmltable; 

Это означает: как выглядит XML - это вопрос интерпретатора. Тот же XML, открытый другим инструментом, может выглядеть по-другому. Работа с XML означает работу с данными, но не с форматом ... Фактический формат не имеет значения и не должен иметь никакого значения ...

Начиная с SQL-Server 2016, вы можете иметь Посмотрите на JSON, если вам нужен крошечный формат:

DECLARE @somedata table(SomeValue VARCHAR(100),SomeStatus VARCHAR(100),SomeDate DATE);
INSERT INTO @somedata VALUES
 ('Complaint10-Call1','Complaints','2019-01-22')
,('Complaint10-Call2','Complaints','2019-01-22')
,('Complaint10-Call3','Complaints','2019-01-22');

SELECT * FROM @somedata FOR JSON PATH;

Результат получается в одной строке :

[{"SomeValue":"Complaint10-Call1","SomeStatus":"Complaints","SomeDate":"2019-01-22"},{"SomeValue":"Complaint10-Call2","SomeStatus":"Complaints","SomeDate":"2019-01-22"},{"SomeValue":"Complaint10-Call3","SomeStatus":"Complaints","SomeDate":"2019-01-22"}]
0
ответ дан Shnugo 20 January 2019 в 10:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: