Join 如何从以下两个查询中选择一个
我有两个问题: 第一个查询是:Join 如何从以下两个查询中选择一个,join,sql-server-2012,Join,Sql Server 2012,我有两个问题: 第一个查询是: SELECT sale.saleid, sale.totalpaid, item.itemname AS item, stock.saleprice AS Price, invoice.qty, sale.discount, invoice.saleprice AS [invoice saleprice], cetegory.catname AS [Cateogo
SELECT sale.saleid,
sale.totalpaid,
item.itemname AS item,
stock.saleprice AS Price,
invoice.qty,
sale.discount,
invoice.saleprice AS [invoice saleprice],
cetegory.catname AS [Cateogory],
cetegory.subcat AS [Sub Catgry],
vehicle.vehicle_name AS [Vehicle],
vehicle.vehicle_model AS [Model],
item.model_number AS [Part No.],
sale.date,
stock.size,
sale.customerid
FROM invoice
JOIN item
ON invoice.itemid = item.itemid
JOIN sale
ON invoice.saleid = sale.saleid
JOIN stock
ON item.itemid = stock.itemid
JOIN cetegory
ON item.catid = cetegory.catid
JOIN vehicle
ON item.vehicleid = vehicle.vehicleid
WHERE sale.saleid = 5
SELECT customer.customername,
customer.customercontact,
customer.customeraddress,
account.account_type
FROM account
JOIN customer
ON customer.customerid = account.customerid
第二个查询是:
SELECT sale.saleid,
sale.totalpaid,
item.itemname AS item,
stock.saleprice AS Price,
invoice.qty,
sale.discount,
invoice.saleprice AS [invoice saleprice],
cetegory.catname AS [Cateogory],
cetegory.subcat AS [Sub Catgry],
vehicle.vehicle_name AS [Vehicle],
vehicle.vehicle_model AS [Model],
item.model_number AS [Part No.],
sale.date,
stock.size,
sale.customerid
FROM invoice
JOIN item
ON invoice.itemid = item.itemid
JOIN sale
ON invoice.saleid = sale.saleid
JOIN stock
ON item.itemid = stock.itemid
JOIN cetegory
ON item.catid = cetegory.catid
JOIN vehicle
ON item.vehicleid = vehicle.vehicleid
WHERE sale.saleid = 5
SELECT customer.customername,
customer.customercontact,
customer.customeraddress,
account.account_type
FROM account
JOIN customer
ON customer.customerid = account.customerid
现在,我想按客户id组合这两个查询,因为我在销售表中有客户id您可以使用CTE,然后将两者合并:
WITH CUST
AS
(SELECT customer.customername,
customer.customercontact,
customer.customeraddress,
account.account_type ,
customer.customerid
FROM account
JOIN customer
ON customer.customerid = account.customerid
),
SALES
AS
(
SELECT sale.saleid,
sale.totalpaid,
item.itemname AS item,
stock.saleprice AS Price,
invoice.qty,
sale.discount,
invoice.saleprice AS [invoice saleprice],
cetegory.catname AS [Cateogory],
cetegory.subcat AS [Sub Catgry],
vehicle.vehicle_name AS [Vehicle],
vehicle.vehicle_model AS [Model],
item.model_number AS [Part No.],
sale.date,
stock.size,
sale.customerid
FROM invoice
JOIN item
ON invoice.itemid = item.itemid
JOIN sale
ON invoice.saleid = sale.saleid
JOIN stock
ON item.itemid = stock.itemid
JOIN cetegory
ON item.catid = cetegory.catid
JOIN vehicle
ON item.vehicleid = vehicle.vehicleid
WHERE sale.saleid = 5
)
SELECT * FROM CUST
LEFT JOIN SALES
ON CUST.customerid = SALES.customerid
c标记的用途是什么?因为我在c@Mrkhan从何处调用查询不会影响查询本身。至于问题本身,你是什么意思?为什么不在一个查询中联接所有表呢?您希望输出是什么样子的?我只想将上述两个查询合并为一个查询。。这正是我想要在一个查询中联接所有表的原因。但不知道如何做,因为公共表表达式是临时结果集,您可以在另一个SELECT、INSERT、UPDATE或DELETE语句中引用它。它们是在SQLServer2005版中引入的。CTE总是返回一个结果集。它们用于简化查询,例如,您可以使用它们从主查询体中删除一个派生表嘿,伙计,您的查询工作正常现在有问题,您能帮我解决吗1我只返回“Asia Dreer 600”,并显示该项。我想跳过这一步,对于其他没有返回2的销售id,付款、借记和折扣金额已经根据一个saleid支付,它会显示我想要的每个相同的销售id。当销售id相同时,只有第一行具有相同的销售id,这些付款、借记和折扣金额会显示,否则它应该为零或为空。请参见图片