2016-03-16 2 views
0

У меня есть 2 таблицы,регистрации в SQL Server с несколькими данными

Таблица 1 является FACT_TABLE

style sales 
ABC  100 
DEF  150 

и Таблица 2 является m_product

product_code style category 
ABCS   ABC  Apparel 
ABCM   ABC  Apparel 
ABCL   ABC  Apparel 
DEF38   DEF  Shoes 
DEF39   DEF  Shoes 
DEF40   DEF  Shoes 

и я хочу присоединиться к этим две таблицы , Я хочу, чтобы результат был

style category sales 
ABC  Apparel 100 
DEF  Shoes  150 

создать запрос, как это, но не

Select t1.style, t2.category, t1.sales 
From fact_table t1 
Inner Join m_product t2 
On t1.style = t2.style 

Результат

style category sales 
ABC  Apparel 100 
ABC  Apparel 100 
ABC  Apparel 100 

Если я использую SUM (продаж) и группу, результат будет сумма всех продаж. Должен ли я использовать средний (продажи), а затем Group By или у вас есть другой вариант?

Я использую SQL Server.

Благодаря

ответ

2

использовать подзапрос:

Select t1.style, t2.category, t1.sales 
From fact_table t1 
Inner Join (SELECT DISTINCT style, category FROM m_product) t2 
On t1.style = t2.style 

BTW, вам нужно изменить дизайн БД, чтобы переместить категорию в отдельную таблицу

+0

Мой голос за слова * переместить категорию в отдельную таблицу * –

0

Может быть что-то вроде этого:

select p.style, p.category, f.sales 
(select distinct style, category 
from m_product) p join fact_table f 
on p.style = f.style 
0

Попробуйте это. Не уверен, правильна ли ваша структура таблицы. Если у вас нет кода продукта в таблице фактов, а не в стиле. Если кто-то попросил вас рассчитать продажи по продукту, то этот strucutre не сможет ответить на него.

Select t1.style, (select distinct t2.category from 
m_product t2 
where t1.style = t2.style) as category, t1.sales 
From fact_table t1 
0

Используйте DISTINCT ключевое слово

Select DISTINCT t1.style, t2.category, t1.sales 
    From fact_table t1 
    Inner Join m_product t2 
    On t1.style = t2.style 
Смежные вопросы