【发布时间】:2015-04-02 14:21:26
【问题描述】:
我必须构建一个查询,该查询将为客户创建一个表 - 'Frank Spencer'(您将在下面的客户表中看到他)。
新表应该包含客户曾经购买过的每件产品的总和,排除那些尚未发货的订单,每件产品在新表中只出现一次。
我的表格如下。
您能告诉我以下哪个是最好的吗?
a)with customer as (select * from customers where lower(CustomerName) = 'frank spencer'),customerorders as(select OrderId from orders o where o.CustomerId in(select CustomerId from customer) and OrderShipped = 'True') select sum(oi.QuantityOrdered) as TotalOrdered, s.ItemName into franksorders from orderitems oi join stock s on oi.StockItemId = s.StockItemId where OrderId in(select * from customerorders) group by ItemName order by ItemName
b)with customer as (select * from customers where lower(CustomerName) = 'frank spencer') join customerorders as(select OrderId from orders o where o.CustomerId in(select CustomerId from customer) and OrderShipped = 'True') select total(oi.QuantityOrdered) as TotalOrdered, s.ItemName into new table franksorders using orderitems oi join stock s on oi.StockItemId = s.StockItemId where OrderId in(select * from customerorders) group by ItemName order by ItemName
c)with customer (select * from customers where 'frank spencer' in (CustomerName)) with customerorders (select OrderId from orders o where o.CustomerId in(select CustomerId from customer) and OrderShipped = 'True') select sum(oi.QuantityOrdered) as TotalOrdered, s.ItemName create table franksorders using orderitems oi join stock s on oi.StockItemId = s.StockItemId where OrderId in(select * from customerorders) group by ItemName order by ItemName
d)using customer with (select * from customers where CustomerName = 'frank spencer' and customerorders with(select OrderId from orders o where o.CustomerId in(select CustomerId from customer) then OrderShipped = 'True') select sum(oi.QuantityOrdered) as TotalOrdered, s.ItemName into franksorders from orderitems oi join stock s on oi.StockItemId = s.StockItemId where OrderId in(select * from customerorders) group by ItemName order by ItemName
【问题讨论】:
-
在你的测试中,哪一个在最短的时间内返回了想要的结果?
-
你只是复制了一些学校任务并想要得到答案...
-
这看起来非常像家庭作业。但撇开这些不谈,“最佳”的定义是什么?您实际尝试过什么?
-
我认为整个概念存在很大缺陷。这是存储计算出来的信息,从长远来看,这将是痛苦的。您将不得不设计各种代码以使该表保持最新。这将更适合作为视图而不是持久表。
-
E) 以上所有!
标签: sql sql-server tsql subquery