2016-11-24 7 views
1

У меня есть экспорт XML xml, который предоставляет мне значение 3 полей и экспорт без проблем. 3 поля, о которых идет речь, называются «День», «Ночь» и «Выходные». То, что я пытаюсь достичь, - это если в дневном поле есть только значение, а в двух других ничего нет, я хочу экспортировать только однодневное поле, полностью опуская Ночь & Выходные поля. Если введена ночная скорость, я хочу экспортировать дневное и ночное поле, и если будет введенное поле недели, я хочу экспортировать все 3 поля.SQL xml export help - Экспорт полей на основе значений других полей

Можно ли достичь этого в рамках одного оператора выбора? так как я не слишком уверен, как это сделать в контейнерах xml.

Это то, что я в настоящее время, которая экспортирует в порядке со всеми полями в:

(SELECT --Product Item--  
'ENERGY' ProductItemReference, 
    (SELECT --Rates-- 
     (SELECT --Rate-- 
      DAY AS Rate, --Mandatory 
     'Unrestricted' RateName 
      FOR XML PATH('Rate'), TYPE), 
     (SELECT 
      NIGHT AS Rate, 
     'Night' RateName 
      FOR XML PATH('Rate'), TYPE), 
     (SELECT 
      WEEKEND AS Rate, 
     'Evening and Weekend' RateName 
      FOR XML PATH('Rate'), TYPE) 
    FOR XML PATH('Rates'), TYPE) 
FOR XML PATH('ProductItem'), TYPE) 

Данные в отборном заявлении может содержать несколько учетные записи некоторые только ставки дня и другие с ночью и в выходные дни. Могу ли я экспортировать каждую учетную запись в правильном формате, указанном выше, в одном заявлении select?

Любые советы будут оценены.

Благодаря

DC

+2

Добро пожаловать в SO. Нам будет легче помочь вам, если вы включите образцы данных и ожидаемый результат. Взгляните [здесь] (http://meta.stackoverflow.com/questions/271055/tips-for-asking-a-good-structured-query-language-sql-question/271056) и [здесь] (http: //stackoverflow.com/help/mcve). На обеих страницах есть несколько полезных советов. Если вы последуете этим, я уверен, что ответы придут. –

ответ

1

Не могли бы вы использовать case when ... then ... end выбрать, какие ставки вы хотите экспортировать?

Не зная, каковы ваши данные (я использовал переменную таблицы) или как вы хотите, чтобы результат мог выглядеть, может быть что-то вроде этой работы?

declare @srcTable table(dayRate int, nightRate int, weekendRate int); 

insert into @srcTable(dayRate, nightRate, weekendRate) 
select 451 dayRate, null nightRate, null weekendRate union 
select 452 dayRate, 453 nightRate, null weekendRate union 
select 454 dayRate, 456 nightRate, 457 weekendRate; 

select 'Energy' ProductItemReference, 
    (
     select 
      (select 'Unrestricted' [@name], dayRate[*] for xml path('Rate'), type), 
      case when nightRate is not null then (select 'Night' [@name], nightRate [*] for xml path('Rate'), type) end, 
      case when weekendRate is not null then (select 'Evening and Weekend' [@name], weekendRate [*] for xml path('Rate'), type) end 
     from @srcTable 
     for xml path('rates'), type 
    ) 
for xml path('ProductItem'), type 
Смежные вопросы