【问题标题】:SQL adding additional columns to a querySQL 向查询中添加附加列
【发布时间】:2012-11-07 20:35:58
【问题描述】:

我正在尝试创建一个查询,让我可以查看所有客户的订单,并使用 sql 添加一个额外的列来查看客户欠款的总额。

以下代码检索正确的数据:

SELECT
    cu.FName + '  ' + cu.SName as 'Name', 
    cu.Address1 + ', ' + cu.Address2 + ', ' + cu.Address3 as 'Dispatch Address', 
    cu.PostCode, 
    co.DateOrdered, co.DateDispatched, 
    ma.MaterialName, 
    it.Quantity, 
    ma.Price as 'Total' 
FROM
    Customers cu 
LEFT JOIN 
    CustomerOrder co ON co.CustomerID = cu.CustomerID 
LEFT JOIN
    ItemOrder it ON it.OrderID = co.OrderID 
LEFT JOIN 
    Materials ma ON ma.MaterialID = it.MaterialID 

我现在需要在上面添加额外的代码来添加一列来显示客户欠款的总金额,但是我卡住了,有人可以帮忙吗?

Date Order   |    Dispatch Date | Item  | QTY  |   Price | TOTAL AMOUNT FOR BOTH ROWS
2012-10-30   |    2012-11-25    | Bath  | 1    |   49.99 |  
2012-10-30   |    2012-11-25    | Sink  | 1    |   55.99 |

【问题讨论】:

  • 尝试添加数量。如果这两个字段不在同一数据类型中,则在总计为 (it.Quantity * ma.Price) 为“金额”之后使用强制转换
  • 你能用一个工作数据模型创建一个sql fiddle吗?处理每个表中的数据会更容易。

标签: sql sql-server sql-server-2008 tsql


【解决方案1】:

试试这个:

Select 
  cu.FName + '  ' + cu.SName as 'Name', 
  cu.Address1 + ', ' + cu.Address2 + ', ' + cu.Address3 as 'Dispatch Address', 
  cu.PostCode, 
  co.DateOrdered, co.DateDispatched, 
  ma.MaterialName, 
  it.Quantity, 
  ma.Price as 'Total' ,
  (it.Quantity * ma.Price) 'Owe amount'
from Customers cu 
left join CustomerOrder co on co.CustomerID = cu.CustomerID 
left join ItemOrder it on it.OrderID = co.OrderID 
left join Materials ma on ma.MaterialID = it.MaterialID 

【讨论】:

  • 您好,感谢您的帖子,无论如何我可以将第 1 行和第 2 行加在一起吗?这是我被赋予的任务......“创建一个查询,显示哪些客户已订购了哪些商品以及每个客户所下订单的总价值”
  • @Annoscia - 你是什么意思?请您用一些示例数据编辑您的问题。
【解决方案2】:
SELECT
    cu.FName + '  ' + cu.SName as 'Name', 
    cu.Address1 + ', ' + cu.Address2 + ', ' + cu.Address3 as 'Dispatch Address', 
    cu.PostCode, 
    co.DateOrdered, co.DateDispatched, 
    ma.MaterialName, 
    it.Quantity, 
    ma.Price as 'Total',
    sum(it.Quantity * ma.Price) over (partition by cu.CustomerID) as TotalOwed
from Customers cu 
left join CustomerOrder co on co.CustomerID = cu.CustomerID 
left join ItemOrder it on it.OrderID = co.OrderID 
left join Materials ma on ma.MaterialID = it.MaterialID 

【讨论】:

  • 您好,感谢您的帖子,无论如何我可以将第 1 行和第 2 行加在一起吗?这是我被赋予的任务......“创建一个查询,显示哪些客户已订购了哪些商品以及每个客户所下订单的总价值
  • @Annoscia 此查询的结果与预期结果有何不同?
猜你喜欢
  • 2020-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
  • 2017-05-26
  • 1970-01-01
相关资源
最近更新 更多