저는 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
기본적으로 Region_Strat 테이블의 STRAT 열을 Sales_Records 테이블에 추가하여 아래 테이블을 제공하는 vw_sales라는 뷰 (변경할 수없는 뷰로 저장 됨)가 있습니다.
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가 한 행에 표시되도록 쿼리를 어떻게 변경합니까?
이 시도:
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
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다