2017-12-26 15 views
0

私は各倉庫から特定の製品ラインを量産できる仕事用に何かを並べ替えようとしています。私は同等の種類やバウンドエラーのような多くのエラーコードを取得しておく、どんなに私が解決する問題に適応しようとすると何SQL PIVOT 2つのテーブル

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] 

SAPのB1ソフトウェアを使用していないよ...私はそれが明らかであると仮定しますが、誰でも助けることができます?

データは同様に何が来るのか、この:(数百の製品ラインで)

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

表の作成:

create table demo 
(
    productcode nvarchar(50), 
    Warehouse nvarchar(50), 
    Quantity int 
); 

表の挿入:

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);