2017-06-02 35 views
0

我在弄清楚如何顯示每個客戶可以與我們一起下訂單的類型。我們有以下表格CLIENTS,CLIENT_SERVICE_TYPE,SERVICE_TYPES,PRODUCT_TYPESQL - 彙總從授權列表中獲得的所有產品類型

我們有許多服務類型可以很容易地與水果和蔬菜相關聯。

客戶 - 列出所有客戶
CLIENT_SERVICE_TYPE - 列出了所有的服務類型(蘋果,梨,香蕉,南瓜,雞),他們被授權的地方。
SERVICE_TYPES - 列出我們提供的數百種和數百種水果和蔬菜(其中,每個客戶只能訂購少數幾種)
PRODUCT_TYPE列出我們提供的5種類別(IE水果,蔬菜,香料,乳製品,肉類)

我希望能夠創造一個總結報告,將顯示某些客戶端這樣的

公司名稱|銷售代表| 產品類型
ABC公司|簡·史密斯| 水果
公司XYZ | Joe Aardvark | 蔬菜,水果
公司123 |艾米亞當斯| 肉,蔬菜,水果

在上述例子中,ABC公司有15種授權水果(香蕉,蘋果,橘子等),但其歸納爲1上一行水果。 XYZ公司擁有15個授權水果和1個胡蘿蔔。我想讓它出現(順序無關緊要)蔬菜,水果在同一行上。公司123僅獲得4項服務(雞肉,香蕉,豌豆和壁球)的授權。 肉類,蔬菜,水果

我知道這可能很容易找到現有的教程,但我的術語顯然不符合標準。就我所知,這可能是你猜到的,它顯示了多條服務類型被批准的多行。

SELECT 
    company [Client Name] 
    ,salesperson [Sales Rep] 
    --,pt.productTypeName [List of approved Product Types] 
    FROM CLIENT cl (NOLOCK) 
     LEFT JOIN 
    CLIENT_SERVICE_TYPE cst (NOLOCK) = cl.client_key = cst.client_key 
     LEFT JOIN 
    SERVICE_TYPE st (NOLOCK) = cst.service_key = st.service_key 
     LEFT JOIN 
    PRODUCT_TYPE pt (NOLOCK) = cst.productTypeId = pt.productTypeId 
WHERE cl.client_program_id in (1,2,3) 
    and status = 160 
ORDER BY company 
+0

您是否嘗試過「GROUP BY」?如果你需要在一個列中有多個行值,你可能還需要一個'PIVOT'或子查詢。 –

+0

我嘗試了Group By,這似乎成爲我想要成就的一部分,但不是全部。 在我上面的例子中,結果就像這樣變成 公司XYZ | Joe Aardvark | **蔬菜** 公司XYZ | Joe Aardvark | **水果** – dplres81715

+0

我發現[有希望的鏈接](https://stackoverflow.com/questions/6899/how-to-create-a-sql-server-function-to-join-multiple-rows-from- a-subquery-into),我可以在最後使用GROUP BY將數據合併爲一個值。它不完全是我想要做的事,但該死的如果它不夠接近 – dplres81715

回答

0

通過反覆試驗找到答案。在SELECT語句,這是我做的

SELECT 
company as [Company Name] 
,salesperson as [Sales Rep] 
,(STUFF((SELECT CAST(', ' + productTypeName AS VARCHAR(MAX)) 
    FROM CLIENT_SERVICE_TYPE cst 
     LEFT JOIN 
    SERVICE_TYPE st on cst.service_type_key = st.service_type_key 
     LEFT JOIN 
    PRODUCT_TYPE pt on st.product_type_key = pt.product_type_key 
    WHERE c.client_key = cst.client_key 
    GROUP BY pt.product_type_name 
    FOR XML PATH ('')),1,2, '')) [Product Types] 
FROM CLIENT c 

最終結果
公司名稱|銷售代表|產品類型
公司ABC |簡史密斯| 水果
公司XYZ | Joe Aardvark | 蔬菜,水果
公司123 |艾米亞當斯| 肉類,蔬菜,水果

相關問題