私は各クライアントが私たちと共に置くことができる注文のタイプを表示する方法を理解しようとしています。我々は以下のテーブルを持っていますCLIENT_SERVICE_TYPE、SERVICE_TYPES、PRODUCT_TYPESQL - すべての商品タイプを承認済みのリストから要約する
私たちはフルーツと野菜に簡単に関連付けることができる多くのサービスタイプがあります。
CLIENTS - リストのすべてのお客様
CLIENT_SERVICE_TYPE - リスト彼らは置くことが許可されているサービスの種類(りんご、梨、バナナ、スカッシュ、チキン)のすべて。
SERVICE_TYPES - 私たちが提供する数百、数百の果物と野菜をリストしています。営業担当者| | 製品タイプ
会社ABC |ジェーン・スミス| 果物
私はこの
会社名のように、特定のクライアントを表示する要約レポートを作成できるようにしたいです
会社名XYZ |ジョー・アードバーク| Joe Aardvark 野菜、フルーツ
会社123 |エイミー・アダムス| 肉、野菜、上記の例ではフルーツ
は、ABC社は、15個の認可果実(バナナ、リンゴ、オレンジ、等)を有しているが、その一行に1 果実として要約します。 XYZ社には15種類の認定フルーツと1人のニンジンがいます。私はそれが同じ行に野菜、果物として表示する(順序は関係ありません)したい。会社123は、4つのサービス(チキン、バナナ、エンドウ豆、スクワッシュ)のみの認可を受けています。 肉、野菜、フルーツ
私はこれはおそらく既存のチュートリアルを見つけるのは簡単だろうが、私の専門用語は明らかにそれほどではない。これは私の知る限りであり、あなたが推測できるように、承認されたX種類のサービスタイプに対して複数の行が表示されています。
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を使用してデータを1つの値に結合できます。私がやりたかったことの100%ではありませんが、それほど近くになければ気になりません。 – dplres81715