2017-12-26 2 views
0

나는 각 창고에서 특정 제품 라인을 수량으로 얻을 수있는 작업을 위해 뭔가를 정렬하려고합니다. 나는 SAP의 B1 소프트웨어를 사용하고SQL PIVOT 두 테이블

SELECT T0.[ItemCode], [01],[BNE],[SHOP],[Transit] 
    FROM OITM T0 INNER JOIN OITW T1 ON T0.[ItemCode] = T1.[ItemCode] 
    PIVOT(SUM(T1.OnHand) FOR T1.WhsCode IN([01],[BNE],[SHOP],[Transit])) AS PivotTable 
    Group By T0.[ItemCode] 

는 상관없이 내가 비교 유형 또는 바인딩 오류와 같은 더 많은 오류 코드가 계속 해결 문제에 적응하려고 무엇을 ... 나는 그것이 분명하지만 생각하지 수있는 사람의 도움을 ?

이 어떤 데이터가 같이 제공됩니다 :

Product Code Warehouse Quantity 
PROD0001   01   50 
        BNE   94 
        Shop   80 
        Transit  80 
-------------------------------------  
PROD0002   01   10 
        BNE   20 
        Shop   00 
        Transit  70 
------------------------------------- 
PROD0003   01   99 
        BNE   62 
        Shop   20 
        Transit  15 

(몇 백 제품 라인)를 내가 SQL 쿼리를 통해이 같은 일을 달성하기 위해 꿔 :

Product Code 01 BNE Shop Transit 
PROD0001  50 94 80  80 
PROD0002  10 20 00  70 
PROD0003  99 62 20  15 
+1

형식 코드, PLS. – Tomato32

+0

샘플 데이터와 예상 결과를 제공 할 수 있습니까? 그래서 모두가 당신을 쉽게 도울 수 있습니다. – Tomato32

+0

어떤 DBMS를 사용하고 있습니까? "SQL"은 쿼리 언어 일 뿐이며 데이터베이스 제품의 이름은 아닙니다. –

답변

0

표 만들기 :

,210

표 삽입 :

insert into demo values 

('PROD0001','01','50'), 
('PROD0001','BNE','94'), 
('PROD0001','Shop','80'), 
('PROD0001','Transit','80'), 
('PROD0002','01','10'), 
('PROD0002','BNE','20'), 
('PROD0002','Shop','00'), 
('PROD0002','Transit','70'), 
('PROD0003','01','99'), 
('PROD0003','BNE','62'), 
('PROD0003','Shop','20'), 
('PROD0003','Transit','15'); 

SQL 쿼리 : 첫째

declare @sql as varchar(max); 

select @sql = 'select [productcode], ' + stuff((
    select distinct ',sum(case [WareHouse] when ' + char(39) + [WareHouse] + char(39) + ' then cast([Quantity] as float) end) as [' + [WareHouse] + ']' 
    from demo 
    for xml path('') 
) 
, 1, 1, '' 
); 

select @sql += ' from [demo] group by [productcode];'; 

exec(@sql);