2017-12-19 11 views
0

は私が持っている必要3テーブルアンピボットは

1.User 
2.Item 
3.Data 

テーブルスキーマ:私は3つのテーブルに参加しているが、私はTAX1、tax2、税引後とtax4データを表示させたい

1.CREATE TABLE User (
'UserID' INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
'UserName' TEXT NOT NULL, 
'TINNUMBER' TEXT) 
2.CREATE TABLE ITEM(
'ItemNo' INTEGER NOT NULL, 
'InvNumber' INTEGER not null 
'ITEMID' TEXT, 
'ItemName'TEXT, 
    'Tax1' INTEGER, 
    'Tax2' INTEGER, 
    'Tax3' INTEGER, 
    'Tax4' INTEGER,) 
3.CREATE TABLE DATA(
'InvNumber' INTEGER not null 
    'UserID' INTEGER, 
    'UserName' TEXT, 
    'TotalAmount' NUMERIC  
) 

select P.TINNUMBER 
     ,SI.InvNumber 
     ,SI.TotalAmount 
     ,SII.ItemName 
     ,SII.Tax1 
     ,SII.Tax2 
     ,SII.Tax3 
     ,SII.Tax4 
from SalesInvoices SI 
Inner Join user P ON SI.UserID=P.UserID 
Left Outer Join Item SII on SI.InvNumber=SII.InvNumber 

他の列データをsamとして行内に格納します。助けが必要です。

'<table><tr><th>TINNumber</th><th>InvNumber</th><th>TotalAmount</th><th>ItemName</th><th>Tax1</th></tr> 
<tr><th>TINNumber</th><th>InvNumber</th><th>TotalAmount</th> 
<th>ItemName</th><th>Tax2</th></tr> 
<tr><th>TINNumber</th><th>InvNumber</th><th>TotalAmount</th> 
<th>ItemName</th><th>Tax3</th></tr> 
<tr><th>TINNumber</th><th>InvNumber</th><th>TotalAmount</th> 
<th>ItemName</th><th>Tax4</th></tr></table>' 
+1

サンプルデータと予想されるO/Pも共有できますか? –

+0

どのDBMSとバージョンを使用していますか? –

+0

SQLLITEとサンプル出力を追加します –

答えて

1

UNION ALLを使用してピボットを解除してください。残念ながら、Sqliteはピボット/アンピボットショートカットを持っていません。お試しください

select P.TINNUMBER 
     ,SI.InvNumber 
     ,SI.TotalAmount 
     ,SII.ItemName 
     ,SII.Tax 
from SalesInvoices SI 
Inner Join user P ON SI.UserID=P.UserID 
Left Outer Join (
    Select InvNumber, ItemName, Tax1 as Tax 
    From Item 
    Union All 
    Select InvNumber, ItemName, Tax2 as Tax 
    From Item 
    Union All 
    Select InvNumber, ItemName, Tax3 as Tax 
    From Item 
    Union All 
    Select InvNumber, ItemName, Tax4 as Tax 
    From Item 
) SII on SI.InvNumber=SII.InvNumber 
+0

はい、ありがとうございます –

関連する問題