Http://i.stack.imgur.com/z0fSP.png
Http://i.stack.imgur.com/Nd3nB.png
Http://i.stack.imgur.com/5qtRh.png
Http://i.stack.imgur.com/01PVc.png
Http://i.stack.imgur.com/wvibY.png
INSERT INTO OrderArchive
(OrderNumber,OrderDate,StockItem,Quantity,UnitPrice,SalesRep,Customer,ArchiveDate)
SELECT "ORDER".OrderNo,
"ORDER".OrderDate,
Stock.StockNo||' '||Stock.StockDesc,
Orderline.Quantity,
Orderline.UnitPrice,
Person.FirstName||' '||Person.Surname,
Person.FirstName||' '||Person.Surname,
OrderArchive.ArchiveDate
FROM "ORDER"
INNER JOIN Stock
ON Stock.StockNo||' '||Stock.StockDesc = OrderAchive.StockItem
INNER JOIN Orderline
ON Orderline.Quantity = OrderArchive.Quantity
INNER JOIN Orderline
ON Orderline.UnitPrice = OrderArchive.UnitPrice
INNER JOIN Person
ON Person.FirstName||' '||Person.Surname = OrderArchive.SalesRep
INNER JOIN Person
ON Person.FirstName||' '||Person.Surname = OrderArchive.Customer
WHERE "ORDER".OrderDate < DATEADD('M',6,SYSDATE);
我试图先解决它,但是无法管理它....我正在尝试将超过6个月的订单移至OrderArchive ... OrderArchive有OrderNo&amp;订单日期来自&#34; ORDER&#34;表库存项目是StockID和Stockdesc的组合,来自库存表数量和单位成本来自订单表salesrep,客户来自人员表,而datearchived是日期的sysdate订单已存档
答案 0 :(得分:0)
为此,您需要一种方法将Person
记录加入TableOrder
记录。此代码假定您在PersonID
表上有TableOrder
。您可以在CustomerID
表格中使用SalesPersonID
或TableOrder
或类似内容将其加入Person
表格,但我不清楚。
INSERT INTO ArchiveTable (col_1,col_2,col_3,col_4 etc)
SELECT
o.OrderNo,
o.OrderDate,
p.StockNo||' '||p.StockDesc,
p.FirstName||' '|| p.Surname
FROM TableOrder o
INNER JOIN Person p
ON p.PersonID = o.PersonID
WHERE o.orderdate < DATEADD('M',12,SYSDATE)
答案 1 :(得分:0)
我认为您没有从查询中获得预期的输出,因为您同时加入Person
表同时包含SalesRep
和Customer
名称。因此,只有订单具有SalesRep
和Customer
的相同名称时,您才能获得任何数据。因此,我为Person表创建了不同的表别名,如下所示:
INSERT INTO OrderArchive
(OrderNumber,OrderDate,StockItem,Quantity,UnitPrice,SalesRep,Customer,ArchiveDate)
SELECT
"ORDER".OrderNo,
"ORDER".OrderDate,
Stock.StockNo||' '||Stock.StockDesc,
Orderline.Quantity,
Orderline.UnitPrice,
Person_SR.FirstName||' '||Person_SR.Surname,
Person_C.FirstName||' '||Person_C.Surname,
OrderArchive.ArchiveDate
FROM "ORDER"
INNER JOIN Stock
ON Stock.StockNo||' '||Stock.StockDesc = OrderAchive.StockItem
INNER JOIN Orderline
ON Orderline.Quantity = OrderArchive.Quantity
INNER JOIN Orderline
ON Orderline.UnitPrice = OrderArchive.UnitPrice
INNER JOIN Person Person_SR
ON Person_SR.FirstName||' '||Person_SR.Surname = OrderArchive.SalesRep
INNER JOIN Person Person_C
ON Person_C.FirstName||' '||Person_C.Surname = OrderArchive.Customer
WHERE "ORDER".OrderDate < DATEADD('M',6,SYSDATE);
答案 2 :(得分:0)
INSERT INTO OrderArchive(OrderNumber,OrderDate,StockItem,Quantity,UnitPrice,SalesRep,Customer) 选择“订购”。订单没有, “ORDER” .OrderDate, Stock.StockNo ||' “|| Stock.StockDesc, Orderline.Quantity, Stock.UnitCost, “ORDER” .SalesRepID, Person.FirstName ||” “|| Person.Surname 来自内部联系人 (“订购”左边加入 (订单内联股票 在Orderline.StockID = Stock.StockNo) ON “ORDER” .OrderNo = OrderLine.OrderNo) ON Person.PersonID =“ORDER”.CustomerID 在哪里“订购”。订单日期&lt; ADD_MONTHS(SYSDATE,-6) 订购“订购”。订单编号;
SELECT * FROM OrderArchive;
几乎完成我只需要让SalesRepID说出salesrep的姓氏,但大部分已经完成:)