【发布时间】:2018-02-05 08:26:03
【问题描述】:
如果 order by 子句未应用于我的列 [pay_date],我将获得列值。以下是创建表并插入虚拟值以设置与我相同的场景的查询
CREATE TABLE [payment_customer]
(
pay_date datetime ,
customer_name text,
pay_amt Memo,
bal_amt Memo
)
CREATE TABLE [report_invoice]
(
inv_no text,
inv_date datetime ,
pname text,
grand_total Memo
)
Insert Into report_invoice Values
('INV/17-17/0001',#2017-08-08 00:00:00#,'Customer 1',1000)
Insert Into report_invoice Values
('INV/17-17/0002',#2017-08-27 00:00:00#,'Customer 1',300)
Insert Into report_invoice Values
('INV/17-17/0003',#2017-08-27 00:00:00#,'Customer 1',2000)
Insert Into report_invoice Values
('INV/17-17/0004',#2017-08-27 00:00:00#,'Customer 2',500)
Insert Into report_invoice Values
('INV/17-17/0005',#2017-08-28 00:00:00#,'Customer 1',3000)
Insert Into report_invoice Values
('INV/17-17/0006',#2017-08-29 00:00:00#,'Customer 3',700)
Insert Into payment_customer Values
(#2017-08-27 00:00:00#,'Customer 1',500,1500)
Insert Into payment_customer Values
(#2017-08-28 00:00:00#,'Customer 2',200,300)
最终查询
Select * from
(
Select t1.inv_no,t1.inv_date,t1.pname,t1.grand_total , t2.pay_date,t2.customer_name,t2.pay_amt,t2.bal_amt from report_invoice t1
LEFT join payment_customer t2 on t1.inv_date = t2.pay_date and t1.pname = t2.customer_name
UNION ALL
Select t2.inv_no,t2.inv_date,t2.pname,t2.grand_total , t1.pay_date,t1.customer_name,t1.pay_amt,t1.bal_amt from payment_customer t1
LEFT join report_invoice t2 on t1.pay_date = t2.inv_date where t2.inv_date is null
) as v
order by IIF(IsNull(v.inv_date),v.pay_date,v.inv_date)
我得到的结果,但可以看到,2017 年 8 月 28 日的 customer_name、pay_amt、bal_amt 是重复的 inv_no inv_date pname grand_total pay_date customer_name pay_amt bal_amt
INV/17-18/00001 08/08/2017 Veena Industries Ltd. 238.832
INV/17-18/00002 27/08/2017 Excel Plants 514.95 27/08/2017 Excel Plants & Equipment Pvt. Ltd. 300 214.95
INV/17-18/00003 29/08/2017 I- Tech 400
INV/17-18/00004 28/08/2017 VEENA 514.95 28/08/2017 VEENA 300 214.95
INV/17-18/00005 28/08/2017 VEENA 600
【问题讨论】:
-
您认为
dated 28/08/2017 is重复记录如何。只需检查第一列和第三列是否有两条记录是INV/17-18/00004,514.95和INV/17-18/00005,600完全不同。你真的想为每个日期只显示一个记录吗?如果是的话。你需要显示哪一个? -
实际上有两个不同的表,如果条件得到满足,我只想加入一次我将只需要 28/08/2017,VEENA , 300 , 214 的行和记录,如果也满足多个条件次
-
我不明白你想告诉什么。但是,当我加入您提到的“[payment_customer]”和“[report_invoice]”的上述表格时。您需要显示的所需输出是什么。在上述问题中以文本格式显示您的输出。
-
查看我更新的问题
标签: sql datetime ms-access ms-access-2010 ms-access-2007