SQL从选择规范化数据库中重复的行

问题描述 投票:0回答:1

我是sql的新手,我一直在研究规范化的数据库,但是,我似乎遇到了一些错误,例如重复的行。

这是我使用的查询

SELECT N.Product_Name, C.Category , S.sub_categories,SSC.Sub_Sub_Categories
FROM ( SELECT DISTINCT Product_Code, Name_Code FROM Product_Table ) P 
JOIN ( SELECT DISTINCT Name_Code, Product_Name FROM Product_Name_Table ) N on P.Name_Code = N.Name_Code 
JOIN ( SELECT DISTINCT Product_Code, Category FROM category_table ) C on P.Product_Code = C.Product_Code
join ( SELECT DISTINCT Product_Code,sub_categories From sub_categories ) S on P.Product_Code =  S.Product_Code
join ( SELECT DISTINCT Sub_Sub_Categories,Product_Code From sub_sub_categories ) SSC on P.Product_Code =  SSC.Product_Code

这是表的输出。如您所见,林德90%的巧克力,巧克力和黑巧克力分别为sub cat和sub_sub_cat,但显示为单独的行。

+---------------------------------------------------------------------------+-------------------------+----------------------------------+
| Product_Name                  Category           sub_cat     sub_sub_cat |                                            |               
| Chocolate Bar-90%(Dark) Food Cupboard     Chocolates      Blocks    |                         |                                  |
| Chocolate Bar-70%(Dark) Food Cupboard     Chocolates      Blocks    |                         |                                  |
| Chocolate Bar-70%(Dark) Food Cupboard     Dark            Blocks    |                         |                                  |
| Chocolate Bar-90%(Dark) Food Cupboard     Chocolates     Chocolates |                         |                                  |
| Chocolate Bar-70%(Dark) Food Cupboard     Chocolates     Chocolates |                         |                                  |
| Chocolate Bar-70%(Dark) Food Cupboard     Dark           Dark       |                         |                                  |
|                                                                           |                         |                                  |
+---------------------------------------------------------------------------+-------------------------+----------------------------------+

我想要的输出

Product_Name              Category            sub_cat     sub_sub_cat |     |
Chocolate Bar-90%(Dark) Food Cupboard     Chocolates,dark  Blocks,Chocolates    
Chocolate Bar-70%(Dark) Food Cupboard     Chocolates,dark  Blocks,Chocolates        

将对此问题的任何提示,建议或替代解决方案!

sql sql-server
1个回答
0
投票

如果使用SQL Server,请尝试使用group_concat

select
  Product_Name,
  category,
  string_agg(sub_cat, ',') within group (order by category) as sub_cat,
  string_agg(sub_sub_cat, ',')  within group (order by category) as sub_sub_cat
from 
(
  select
    distinct Product_Name,
    category,
    sub_cat,
    sub_sub_cat
  from myTable
) t
group by
  Product_Name,
  category
© www.soinside.com 2019 - 2024. All rights reserved.