試圖做一個選擇在SQL Server 2005和輸出發送到XML。表2是具有各種類型信息的通用表。有些產品信息就在那裏,如果是2型,這是一個銷售線索,如果它是類型1.我們可以有多個銷售線索和產品,爲每個case_num從表1SQL選擇輸出到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並得到錯誤。我想聯盟把兩個聯繫在一起,但我認爲我不能在一個更大的選擇範圍內爲我的情況做到這一點。
什麼我越來越:
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
和您的預期輸出是什麼? –