需要使用列名帮助取消透视

问题描述 投票:0回答:1

我有3张桌子

1.User
2.Item
3.Data

表格架构:

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

我加入了3个表,但我希望tax1,tax2,tax3和tax4数据显示在行中,其他列数据为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>'
sql sqlite unpivot
1个回答
1
投票

使用UNION ALL取消它。不幸的是,Sqlite还没有pivot / unpivot快捷方式。尝试

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
© www.soinside.com 2019 - 2024. All rights reserved.