1

私はしばらくこれについて頭を悩ませてきました。主に、解決策を得ることではなく、それがどのように機能するかについてです。ソリューションの実装方法について説明していただければ幸いです。

これは単なるサンプル データです。インライン SELECT ステートメントを含む 5 つのテーブルを使用しています。SQL の達人に感謝します。

サンプル テーブル:

CREATE TABLE source
(
  product varchar(20),
  amount decimal
)

CREATE TABLE cat
(
  category varchar(20),
  product varchar(20)
)

サンプル データの挿入:

INSERT INTO source (product, amount) VALUES
('product1', 1.00),
('product2', 2.00),
('product3', 1.50),
('product4', 5.25)

INSERT INTO cat (category, product) VALUES
('Shirts', 'product1'),
('Green Shirt', 'product1'),
('Gadget', 'product1'),
('Food', 'product2'),
('Games', 'product4')

私の試用クエリ:

DECLARE @categories varchar(200)
SET @categories = NULL

SELECT 
@categories = COALESCE(@categories + ',','') + cat.category
FROM cat

SELECT
DISTINCT source.product,
@categories
FROM cat
JOIN source on source.product = cat.product

出力

PRODUCT     COLUMN_1
product1    Shirts,Green Shirt,Gadget,Food,Games
product2    Shirts,Green Shirt,Gadget,Food,Games
product4    Shirts,Green Shirt,Gadget,Food,Games

望ましい出力:

PRODUCT     COLUMN_1
product1    Shirts, Green Shirt, Gadget
product2    Gadget, Food
product4    Games
4

1 に答える 1

4

これがあなたが探しているものだと思いますGROUP_CONCAT

SELECT
  source.product,
  GROUP_CONCAT(cat.category) cats
FROM cat
  JOIN source on source.product = cat.product
GROUP BY source.product

SQL フィドルのデモ

各カテゴリの間に「,」を入れようとしている場合は、with を使用SEPARATORGROUP_CONCATます。例えば:

GROUP_CONCAT(cat.category separator ', ')
于 2013-05-23T17:22:52.887 に答える