Попытка сделать выбор в SQL Server 2005 и отправить вывод в xml. Таблица 2 представляет собой таблицу общего использования с различными типами информации. Некоторая информация о продукте находится там, если это тип 2, это продажа свинец, если это тип 1. Мы можем иметь несколько потенциальные продажи и продукты для каждого case_num из таблицы 1.SQL select output to XML
Таблица 1
case_num,
date
таблица 2 (общее пользование)
case_num,
rec_type (1=sales lead; 2=product),
various info based on type in generic columns =
col_a,
col_b,
Я пытаюсь что-то вроде:
select
case.case_num
,case.date
,product.col_a as product_name
,product.col_b as product_price
,lead.col_a as sales_lead_name
,lead.col_b as sales_lead_address
from
table_1 case
,table_2 product
,table_2 lead
where
(case.case_num = product.case_num AND product.rec_type = 2)
OR
(case.case_num = lead.case_num AND lead.rec_type = 1)
for xml auto, elements
Это возвращение результатов как
<case>
<case_num>1</case_num>
<date>1/1/2013</date>
<product>
<product_name>name</product_name>
<product_price>1.00</product_price>
<lead>
<sales_lead_name>bob smith</sales_lead_name>
<sales_lead_address>address 1</sales_lead_address>
</lead>
</product>
<product>
<product_name>name2</product_name>
<product_price>2.00</product_price>
<lead>
<sales_lead_name>bob smith</sales_lead_name>
<sales_lead_address>address 1</sales_lead_address>
</lead>
</product>
</case>
Я не хочу, чтобы имя повторяющейся для каждого продукта. С несколькими продуктами и несколькими выводами, как мне форматировать SQL, чтобы он не делал своего рода картезианский продукт в моих результатах?
Я сделал еще один пример, чтобы проиллюстрировать мою проблему. SQL Fiddle example Это делает декартовой результат, сопоставляя все части со всеми людьми. Я хочу иметь один случай, затем каждую часть, затем каждый человек, а затем закрыть дело.
Я пробовал DISTINCT и получал ошибки. Я думал о UNION, чтобы связать два вместе, но я не думаю, что смогу сделать это в рамках большего выбора для моего дела.
Что я получаю:
CASE_NUM DATE PART_NAME PART_PRICE PERSON_NAME COMPANY
1 2013-01-01 stapler 1.00 bob smith acme supplies
1 2013-01-01 matches 2.00 bob smith acme supplies
1 2013-01-01 stapler 1.00 john doe john supply inc
1 2013-01-01 matches 2.00 john doe john supply inc
Что я хочу:
CASE_NUM DATE PART_NAME PART_PRICE PERSON_NAME COMPANY
1 2013-01-01 bob smith acme supplies
1 2013-01-01 john doe john supply inc
1 2013-01-01 matches 2.00
1 2013-01-01 stapler 1.00
В каком формате XML вы хотите получить свой результат? –
Это довольно стандартный вывод XML .. – OGHaza
и каков ваш ожидаемый результат? –