【发布时间】:2016-07-25 00:36:50
【问题描述】:
我想创建一个名为 saledetailfortax 的视图,它将包含 13 列。它们是 saledetaildate、saledetailtime、shopid、productid、unitid、expdate、batchno、mrp、totalprice、qty、looseqty、priceperunit 和 taxd。
我的查询是:
CREATE OR REPLACE VIEW saledetailfortax2 AS
select sd.saledetaildate, sd.saledetailtime, sd.shopid, sd.productid,
sd.unitid, sd.expdate, sd.batchno, sd.mrp, sd.totalprice, sd.qty,
sd.looseqty, sd.unitprice as priceperunit, ord.taxid
from saledetail sd
left JOIN distinctPriceperunit ord
ON sd.productid = ord.productid
AND sd.expdate = ord.expdate
AND sd.batchno = ord.batchno
AND sd.mrp = ord.mrp
AND sd.unitprice = ord.priceperunit
where sd.saledetaildate >= '2016-04-01'
order by sd.saledetaildate , sd.saledetailtime
问题是当有两个具有相同 productid 、 expdate 、 batchno 的taxid 时, mrp 和 unitprice 那么有两条记录带有相同的东西。
假设在 saledetail 表中,一条记录包含相同的 productid、expdate、batchno、mrp 和 unitprice,但是 productid 在 distinctPriceperunit 表中有两条记录,那么当 left join 发生时,它会出现两条记录。但是只有一个记录显示两个滑行中的任何一个。
那么如何消除重复记录。
查看 distinctpriceperunit(都是不同的值):
选择 DISTINCT od.productid、od.unitid、od.priceperunit、od.expdate、od.mrp、od.batchno、od.taxid FROM orderreceivedetail od 按 od.productid、od.unitid、od.priceperunit、od.expdate、od.mrp、od.batchno、od.taxid 订购;
表销售详情 ( saledetailid 字符变化(20)NOT NULL, 销售详情日期, saledetailtime 没有时区的时间戳, shopid 整数, 产品整数, 数量整数, unitid 整数, 单价数字, 离散数字, 离散数字, 延长日期, mrp 数字, mfdate 日期, 批次无字符变化(50), 总价格数字, 返回布尔值, 用户 ID 整数, saleid 字符变化(20), isloose 布尔值, 松散的整数, CONSTRAINT saledetail_pkey PRIMARY KEY (saledetailid) )
【问题讨论】:
-
能否请您格式化查询以使其更具可读性。此外,您能否提供表格的定义。
-
选择列表中的 GROUP BY 或相关子查询。
标签: sql postgresql