2017-12-19 12 views
0

내가이 필요한 3 표피벗 해제는

1.User 
2.Item 
3.Data 

테이블 스키마 : 나는 3 테이블에 합류했다하지만 난 tax1, tax2, tax3 및 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

네, 감사합니다. –