Sql 将2个字段合并为1个字段
为了解释我要做的事,我会假设一个情况。(忽略坏的数据库设计lol) 3个表:Sql 将2个字段合并为1个字段,sql,sql-server,Sql,Sql Server,为了解释我要做的事,我会假设一个情况。(忽略坏的数据库设计lol) 3个表: Customers: CustomerID (pk), CustomerName AM_Orders: OrderID (pk), OrderDateTime, TotalAmt, CustomerID (fk), OrderType PM_Orders: OrderID (pk), OrderDateTime, TotalAmt, CustomerID (fk) OrderType 我希望生成一个查询,显示所有加入
Customers: CustomerID (pk), CustomerName
AM_Orders: OrderID (pk), OrderDateTime, TotalAmt, CustomerID (fk), OrderType
PM_Orders: OrderID (pk), OrderDateTime, TotalAmt, CustomerID (fk) OrderType
我希望生成一个查询,显示所有加入AM_订单和PM_订单的客户,但我只希望有一个TotalAmt字段,而不是两个
因此,结果可能是
ID CName TotalAmt OrderType
1 Bob $100 "AM"
1 Bob $10 "AM"
3 Steve $20 "PM"
4 Tom $20.45 "AM"
5 Andy $21 "PM"
6 Jimmy
我该怎么做 这有点含糊不清,但听起来像是要将所有结果联合起来:
select
c.CustomerID ID,
c.CustomerName Cname,
o.TotalAmt,
o.OrderType
from
Customers c
left join
AM_Orders o
on c.CustomerID = o.CustomerID
union all
select
c.CustomerID ID,
c.CustomerName Cname,
o.TotalAmt,
o.OrderType
from
Customers c
left join
PM_Orders o
on c.CustomerID = o.CustomerID
order by
ID;
或者按照Tab的建议,先联合,然后加入。这可能更好地处理一个表中有条目而另一个表中没有条目的情况:
;with all_orders as (
select
o.CustomerID,
o.TotalAmt,
o.OrderType
from
AM_Orders o
union all
select
o.CustomerID,
o.TotalAmt,
o.OrderType
from
PM_Orders o
) select
c.CustomerID ID,
c.CustomerName Cname,
a.TotalAmt,
a.OrderType
from
Customers c
left join
all_orders a
on c.CustomerID = a.CustomerID
order by
ID;
您可以左键联接到一个派生表,该派生表是两个Orders表的并集。