我在弄清楚如何顯示每個客戶可以與我們一起下訂單的類型。我們有以下表格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
您是否嘗試過「GROUP BY」?如果你需要在一個列中有多個行值,你可能還需要一個'PIVOT'或子查詢。 –
我嘗試了Group By,這似乎成爲我想要成就的一部分,但不是全部。 在我上面的例子中,結果就像這樣變成 公司XYZ | Joe Aardvark | **蔬菜** 公司XYZ | Joe Aardvark | **水果** – dplres81715
我發現[有希望的鏈接](https://stackoverflow.com/questions/6899/how-to-create-a-sql-server-function-to-join-multiple-rows-from- a-subquery-into),我可以在最後使用GROUP BY將數據合併爲一個值。它不完全是我想要做的事,但該死的如果它不夠接近 – dplres81715