ДЛЯ XML ПУТИ SQLSERVER

Я пытаюсь написать запрос на SQL Server, я могу, но не совсем то, что хочу, поэтому мне нужна помощь.

SELECT (
    select top 1 (
        SELECT top 1 
            (select LTRIM(RTRIM(posta_kodu)) vdKodu from per_bol_tanimlari),
            donem = 'aylik',
            yil = 2020,
            ay = 7
        FROM per_bol_tanimlari
        WHERE posta_kodu is not null
        FOR XML PATH('donem'), root('idari'), TYPE
    ),
    Ltrim(Rtrim(pbt.vergi_no)) AS mukellif_vergi_no,
    Ltrim(Rtrim(pbt.resmi_unvani)) AS soyadi,
    Ltrim(Rtrim(pbt.sicil_no)) AS tcKimlikNo,
    Ltrim(Rtrim(pbt.telefon1)) AS telNo
FROM dbo.per_bol_tanimlari pbt
FOR XML PATH(''), ROOT('genel'), TYPE

и результат такой

<genel>
  <idari>
    <donem>
      <vdKodu>11111</vdKodu>
      <donem>aylik</donem>
      <yil>2020</yil>
      <ay>7</ay>
    </donem>
  </idari>
.........
</genel>

Но мне нужно

<genel>
  <idari>
    <vdKodu>11111</vdKodu>
    <donem>
      <donem>aylik</donem>
      <yil>2020</yil>
      <ay>7</ay>
    </donem>
  </idari>
.....
</genel> 

Я пробовал много вещей, но я не могу


person Yusuf Selim Göl    schedule 22.07.2020    source источник
comment
Задавая вопрос, вы должны предоставить минимальный воспроизводимый пример. Перейдите по следующей ссылке: stackoverflow.com/help/minimal-reproducible-example Укажите следующее: ( 1) Заполнение DDL и выборочных данных, т. е. таблицы CREATE плюс операторы INSERT T-SQL. (2) Что вам нужно сделать, т.е. логика и ваш код пытаются ее реализовать. (3) Желаемый результат, основанный на примерах данных в № 1 выше. (4) Ваша версия SQL Server (SELECT @@version;)   -  person Yitzhak Khabinsky    schedule 22.07.2020
comment
Почему у вас куча TOP 1 и нет ORDER BY?   -  person Larnu    schedule 22.07.2020


Ответы (1)


протестировать этот:

SELECT (
    select top 1  (select LTRIM(RTRIM(posta_kodu)) vdKodu from per_bol_tanimlari),(
        SELECT top 1 
           
            donem = 'aylik',
            yil = 2020,
            ay = 7
        FROM per_bol_tanimlari
        WHERE posta_kodu is not null
        FOR XML PATH('donem'), root('idari'), TYPE
    ),
    Ltrim(Rtrim(pbt.vergi_no)) AS mukellif_vergi_no,
    Ltrim(Rtrim(pbt.resmi_unvani)) AS soyadi,
    Ltrim(Rtrim(pbt.sicil_no)) AS tcKimlikNo,
    Ltrim(Rtrim(pbt.telefon1)) AS telNo
FROM dbo.per_bol_tanimlari pbt
FOR XML PATH(''), ROOT('genel'), TYPE
person Mousa Khodaei    schedule 22.07.2020
comment
Это не работает так, но я все равно спасибо :) - person Yusuf Selim Göl; 06.08.2020