2014-12-03 1 views
1

Я использую SQL Server 2012. У меня есть две таблицы, пожалуйста, смотрите нижесводной таблицы не группировать результаты, как и ожидалось

Table 1 (Region_Strat) 

STRAT SALES_P COMM 
EU  Bob  AC 
EU  Dave  AC 
NA  John  JP 
GB  Mike  AC 


Table 2 (Sales_Records) 

SALES_P AMT SHOP 
Bob  5  ABC 
Bob  10 DEF 
Bob  3  GHI 
Dave  12 ABC 
John  3  DEF 
Mike  11 LIK 

У меня есть мнение называется vw_sales (сохраняемые в виде зрения, это не может быть изменено), который в основном добавляет столбец STRAT из таблицы Region_Strat в таблицу Sales_Records, чтобы дать мне таблицу ниже.

SALES_P AMT SHOP STRAT 
Bob  5  ABC  EU  
Bob  10 DEF  EU  
Bob  3  GHI  EU  
Dave  12 ABC  EU  
John  3  DEF  NA  
Mike  11 LIK  GB 

Все в порядке. Затем я пытаюсь создать таблицу piviot (которая работает, но не дает мне требуемого результата). Мой запрос

SELECT SHOP, [EU],[NA],[GB] 
INTO MY_DB.dbo.TEMP 
FROM 
(SELECT SALES.SHOP, cast(SALES.Amt as bigint) AS SumOfAmt, Region.COMM, Region.STRAT 
    FROM MY_DB.dbo.vw_sales AS SALES JOIN MY_DB.dbo.Region_Strat AS Region ON 
    SALES.SALES_P = Region.SALES_P 
    WHERE Region.COMM in ('AC','JP')) tbl 
pivot 
(sum(SumOfAmt) for STRAT IN([EU],[NA],[GB])) pvt order by SHOP 

Результат я ожидал увидеть,

SHOP EU NA GB 
ABC 17 null null  
DEF 10 3  null 
GHI 3  null null 
LIK null null 11 

Однако результат я вижу магазин DEF показано в два раза ниже.

SHOP EU NA GB 
DEF 10 null null  
DEF null 3  null 

Как изменить Я меняю свой запрос, чтобы DEF показывался в одной строке?

+1

Является ли это рабочий Я не Псевдонима 'STRAT_FUND' где-либо гайка используется в' где Clause' ** STRAT_FUND.COMM ** –

+0

Извинения - копия и паста ошибка. Это должен быть регион, обновленный в моем посте. – mHelpMe

ответ

1

Попробуйте это:

SELECT SHOP, [EU],[NA],[GB] INTO MY_DB.dbo.TEMP 
FROM 
(SELECT SALES.SHOP, cast(SALES.Amt as bigint) AS SumOfAmt, Region.STRAT 
    FROM MY_DB.dbo.vw_sales AS SALES 
    JOIN MY_DB.dbo.Region_Strat AS Region ON SALES.SALES_P = Region.SALES_P 
    WHERE Region.COMM in ('AC','JP') 
) tbl 
pivot (sum(SumOfAmt) for STRAT IN([EU],[NA],[GB])) pvt 
order by SHOP 
Смежные вопросы