【发布时间】:2016-08-08 12:19:37
【问题描述】:
我有两个如下表:
Table_1
Customer Order
----------------------
David Pizza
David Cola
Jack Milkshake
Michael Pizza
Michael Milkshake
Alan Cola
Alan Pizza
Table_2
Customer Order
----------------------
David Pizza
David Cola
Jack Milkshake
Michael Pizza
Michael Milkshake
Alan Milkshake
Alan Pizza
我有这样的代码(我写的是请求而不是订单):
WITH t AS
(SELECT customer
,row_number() over(PARTITION BY customer ORDER BY "ORDER" DESC) order_no
,"ORDER"
,COUNT(*) over(PARTITION BY customer) order_cnt
FROM table_1)
SELECT customer, order1, order2, order3, order_cnt "Counts of Orders"
FROM t
pivot (MAX("ORDER") FOR order_no IN(1 AS order1, 2 AS order2,AS order3))
ORDER BY customer;
它正在做这个:
Table_1
Customer order1 order2 order3 counts of orders
-----------------------------------------------------------
David pizza cola null 2
Jack milkshake null null 1
Michael pizza milkshake null 2
Alan cola pizza null 2
我实现了代码 Table_2,它正在这样做:
Customer Order1 Order2 Order3 Counts of Orders
-------------------------------------------------------------
David Pizza Cola null 2
Jack Milkshake null null 1
Michael Pizza Milkshake null 2
Alan Milkshake Pizza null 2
我想比较这些表。例如:David 在 Table_1 和 Table_2 中点了披萨和可乐。是真的。
但艾伦在 Table_1 中点了可乐、比萨饼,在 Table_2 中点了奶昔、比萨饼 我想看看 Table_1 和 Table_2 之间的区别。
我只有那个代码,我的表看起来像 Table_1 和 Table_2。 编写代码时,我在 Table_1 和 Table_2 中都看到了订单。
但我想看看它们之间的区别。
【问题讨论】:
-
这里不需要 Pivot。谷歌:
SQL-Server group concat -
order是 Oracle 中的保留字,不能用作列名(当然,除非用双引号括起来)。您发布的查询根本无法正常工作。
标签: database oracle pivot-table