【发布时间】:2018-04-25 16:55:07
【问题描述】:
我被一个旧查询卡住了
此查询返回我的库存中所有项目的期末库存值
原始情景表:
T1:DETAIL_PURCHASE
T2:PURCHASE_REPORT
T3:DETAIL_SALE
T4:销售报告
DETAIL_PURCHASE 有列ITEMID、QTYSOLD、BILLNO
PURCHASE_REPORT 有列BILLNO,BILLDATE
DETAIL_SALE有列ITEMID、QTYSOLD、BILLNO
SALE_REPORT 包含 BILLNO、BILLDATE 列
我正在寻找的查询是将每个单独项目 DIFFERENCE 的 DETAIL_PURCHASE 中的所有 QTY 与每个单独项目的 DETAIL_SALE 中的所有 QTY 相加,并使用日期过滤器查询使用 SALE_REPORT 和 PURCHASE_REPORT 中的日期。
SELECT
dp.ITEMNAME,
SUM(CAST(dp.QUANTITY AS numeric(18, 2))) - SUM(CAST(ds.QTY AS numeric(18, 2))) AS [ClosingStock]
FROM detailpurchases AS dp
JOIN purchasereport AS pr
ON dp.BARCODE = pr.voucherno
JOIN detailsale AS ds
ON ds.ITEMN = dp.ITEMN
JOIN salesreport AS sr
ON ds.BARCODE = sr.voucherno
WHERE ds.T = 'R'
AND pr.voucherdate BETWEEN '" & DATE1.Text & "' AND '" & DATE2.Text & "'
AND sr.voucherdate BETWEEN '" & DATE1.Text & "' AND '" & DATE2.Text & "'
GROUP BY dp.ITEMNAME;
上面的查询我解决了,但它仍然返回错误的值。更有可能的价值远远超过所需。
示例表:
详细购买:
ID SN ITEMN 条码 ITEMNAME HSN T CP BID BID BATCHN 数量 282 1 106 0009 5STAR 10.1G 5/- 18063100 0 230.11011 90.0 330 2 106 0014 5STAR 10.1G 5/- 18063100 0 3.979876543 4860.0 332 2 106 0015 5STAR 10.1G 5/- 18063100 0 3.8397736 4860.0 385 3 106 0021 5STAR 10.1G 5/- 18063100 0 210.73944 144.0 446 1 106 0025 5STAR 10.1G 5/- 18063100 0 230.1099 108.0 545 6 106 0034 5STAR 10.1G 5/- 18063100 0 225.34766 1 90.0 598 1 106 0039 5STAR 10.1G 5/- 18063100 0 230.109944 180.0 671 1 106 0044 5STAR 10.1G 5/- 18063100 1 222.80137 54 832 270.0 814 1 106 0070 5STAR 10.1G 5/- 18063100 1 222.80 369 906 108.0详情:
ID SN ITEMN BARCODE ITEMNAME HSN T CP BIID BATCHN 数量 59 12 106 0214 5STAR 10.1G 5/- 18063100 R 222.8 54 832 2.0 94 7 106 0218 5STAR 10.1G 5/- 18063100 R 222.8 54 832 18.0 111 8 106 0220 5STAR 10.1G 5/- 18063100 R 222.8 54 832 5.0 163 1 106 0225 5STAR 10.1G 5/- 18063100 R 222.8 54 832 1.0 189 17 106 0227 5STAR 10.1G 5/- 18063100 R 222.8 54 832 1.0 257 13 106 0231 5STAR 10.1G 5/- 18063100 R 222.8 54 832 5.0 303 12 106 0232 5STAR 10.1G 5/- 18063100 R 222.8 54 832 4.0 359 22 106 0235 5STAR 10.1G 5/- 18063100 R 222.8 54 832 5.0 379 14 106 0236 5STAR 10.1G 5/- 18063100 R 222.8 54 832 2.0 497 1 106 0293 5STAR 10.1G 5/- 18063100 R 222.8 369 906 2.0 516 1 106 0291 5STAR 10.1G 5/- 18063100 R 222.8 369 906 18.0采购报告:
ID VOUCHERTYPE VOUCHERDATE VOUCHERNO 派对 15 购买 2017-07-21 00:00:00.000 0006 VINAYAKA CORPORATION 16 购买 2017-07-14 00:00:00.000 0002 SAI MAHESWARA 代理商 17 购买 2017-07-11 00:00:00.000 0001 SATHYA TRADING CO 18 购买 2017-07-15 00:00:00.000 0003 CHELLU ENTERPRISES 19 购买 2017-07-15 00:00:00.000 0004 RITHESH TRADERS 20 采购 2017-07-16 00:00:00.000 0005 CHELLU ENTERPRISES 21 购买 2017-07-21 00:00:00.000 0006 SRI PRAMEELA MARKETINGS 22 购买 2017-07-22 00:00:00.000 0007 RITHESH TRADERS 24 购买 2017-07-24 00:00:00.000 0008 SATHYA TRADING CO 25 购买 2017-07-29 00:00:00.000 0009 CHELLU ENTERPRISES 26 采购 2017-07-31 00:00:00.000 0010 CHELLU ENTERPRISES 27 购买 2017-07-31 00:00:00.000 0011 RITHESH TRADERS 30 购买 2017-07-31 00:00:00.000 0012 SAI MAHESWARA 代理商 31 购买 2017-08-09 00:00:00.000 0013 CHELLU ENTERPRISES 32 购买 2017-08-09 00:00:00.000 0014 CHELLU ENTERPRISES 33 采购 2017-08-09 00:00:00.000 0015 CHELLU ENTERPRISES 34 采购 2017-08-09 00:00:00.000 0016 CHELLU ENTERPRISES 35 购买 2017-08-08 00:00:00.000 0017 SATHYA TRADING CO 36 购买 2017-08-12 00:00:00.000 0018 SRI PRAMEELA MARKETINGS 37 购买 2017-08-14 00:00:00.000 0019 RITHESH TRADERS 38 采购 2017-08-15 00:00:00.000 0020 CHELLU ENTERPRISES 39 采购 2017-08-17 00:00:00.000 0021 CHELLU ENTERPRISES 40 购买 2017-08-17 00:00:00.000 0022 SATHYA TRADING CO 41 购买 2017-08-21 00:00:00.000 0023 CHELLU ENTERPRISES 42 购买 2017-08-28 00:00:00.000 0024 SATHYA TRADING CO 43 采购 2017-08-29 00:00:00.000 0025 CHELLU ENTERPRISES 45 购买 2017-08-31 00:00:00.000 0027 SAI MAHESWARA 代理商 46 购买 2017-08-31 00:00:00.000 0028 SRI VINAYAKA 代理商 47 购买 2017-08-31 00:00:00.000 0026 RITHESH TRADERS 48 购买 2017-09-11 00:00:00.000 0027 SATHYA TRADING CO 49 购买 2017-09-14 00:00:00.000 0028 RITHESH TRADERS 50 购买 2017-09-15 00:00:00.000 0029 RITHESH TRADERS 51 购买 2017-09-06 00:00:00.000 0030 SRI PRAMEELA MARKETINGS 52 购买 2017-09-08 00:00:00.000 0031 MOKSHITHA ENTERPRISES 53 购买 2017-09-09 00:00:00.000 0032 SAI MAHESWARA 代理商 54 购买 2017-09-09 00:00:00.000 0033 SRI VINAYAKA 机构 55 购买 2017-09-15 00:00:00.000 0034 CHELLU ENTERPRISES 56 购买 2017-09-15 00:00:00.000 0035 CHELLU ENTERPRISES 58 购买 2017-09-29 00:00:00.000 0036 SATHYA TRADING CO 59 购买 2017-09-22 00:00:00.000 0037 CHELLU ENTERPRISES 60 购买 2017-09-22 00:00:00.000 0038 RITHESH TRADERS 61 购买 2017-09-28 00:00:00.000 0039 CHELLU ENTERPRISES 62 购买 2017-09-28 00:00:00.000 0040 RITHESH TRADERS 63 购买 2017-09-28 00:00:00.000 0041 RITHESH TRADERS 64 购买 2017-09-29 00:00:00.000 0042 SATHYA TRADING CO 65 购买 2017-10-09 00:00:00.000 0043 SRI VINAYAKA 代理商 66 采购 2017-10-10 00:00:00.000 0044 CHELLU ENTERPRISES 67 购买 2017-10-11 00:00:00.000 0045 MOKSHITHA ENTERPRISES 68 购买 2017-10-14 00:00:00.000 0046 SATHYA TRADING CO 69 购买 2017-10-14 00:00:00.000 0047 RITHESH TRADERS 72 采购 2017-10-23 00:00:00.000 0048 CHELLU ENTERPRISES 73 采购 2017-10-23 00:00:00.000 0049 CHELLU ENTERPRISES 74 采购 2017-10-23 00:00:00.000 0050 CHELLU ENTERPRISES销售报告
ID VOUCHERTYPE VOUCHERDATE VOUCHERNO 派对 4 销售 2017-10-02 00:00:00.000 0212 SAI MEDICALS 6 持有 2017-10-03 00:00:00.000 0214 VAMSI 克里希纳超级市场 7 销售 2017-10-03 00:00:00.000 0215 广告超级市场 9 销售 2017-10-04 00:00:00.000 0217 SRI BALAJI GENARAL STORE 10 销售 2017-10-04 00:00:00.000 0218 新 SS BEKERY 11 销售 2017-10-04 00:00:00.000 0219 KANYAKA PARAMESWARI 商店 12 销售 2017-10-05 00:00:00.000 0220 VASAVI 商店 13 销售 2017-10-05 00:00:00.000 0221 NAVEEN 14 销售 2017-10-05 00:00:00.000 0222 SRI HARI MEDICALS 15 销售 2017-10-05 00:00:00.000 0223 JAKKAM 购物角 16 销售 2017-10-05 00:00:00.000 0224 C NARESH 19 销售 2017-10-05 00:00:00.000 0225 K R C SONS 商店 20 销售 2017-10-05 00:00:00.000 0226 SREEDHAR TRADERS 21 销售 2017-10-06 00:00:00.000 0227 B V SHANMUGAM 22 销售 2017-10-06 00:00:00.000 0228 新 VENKATESWARA 糖果 23 销售 2017-10-07 00:00:00.000 0229 VIJAYA MEDICAL&GENARAL STORE 24 销售 2017-10-07 00:00:00.000 0230 LANCHIPALLI MALLAINAIDU 25 销售 2017-10-07 00:00:00.000 0231 新 VENKATADRI 糖果和冷饮 27 销售 2017-10-08 00:00:00.000 0232 LANCHIPALLI MALLAINAIDU 28 销售 2017-10-08 00:00:00.000 0233 J.BALASUBRAMANYAM 29 销售 2017-10-08 00:00:00.000 0234 RAJESWARI 综合商店 30 销售 2017-10-08 00:00:00.000 0235 M/S SRI SAI PROVISINAL&DIGNITY STORE 31 销售 2017-10-08 00:00:00.000 0236 B V SUBRAMANYAM 32 销售 2017-10-09 00:00:00.000 0237 K. MADHUSUDAHANA,KUPPAM 33 销售 2017-10-09 00:00:00.000 0238 JK SUPER BAZAAR 34 销售 2017-10-09 00:00:00.000 0239 新的 LAKSHMI 供应商店 35 销售 2017-10-03 00:00:00.000 0213 RAJU 36 销售 2017-10-04 00:00:00.000 0216 巴拉吉 42 销售 2017-11-03 00:00:00.000 0293 LAKSHMI 超级市场 43 销售 2017-11-03 00:00:00.000 0292 SREEDHAR TRADERS 44 销售 2017-11-02 00:00:00.000 0291 M/S R S PANDURANGA GENARAL MARCHANT 45 销售 2017-11-02 00:00:00.000 0290 SREEDHAR TRADERS 47 销售 2017-11-04 00:00:00.000 0294 SRI MURUGAN AGENCY&GENARAL STORES 49 销售 2017-11-04 00:00:00.000 0295 SRI HARI MEDICALS 50 销售 2017-11-05 00:00:00.000 0296 M/S SRI SAI PROVISINAL&DIGNITY STORE 52 销售 2017-11-05 00:00:00.000 0297 LAKSHMI 超级市场 53 销售 2017-11-05 00:00:00.000 0298 VAMSI KRISHNA SUPER BAZAAR 54 销售 2017-10-02 00:00:00.000 0210 KA SUPER BAZAAR 55 销售 2017-10-02 00:00:00.000 0211 SRI MURUGAN AGENCY&GENARAL STORE我尝试运行查询:
select
dp.ITEMNAME,dp.BARCODE,
(CAST(dp.QUANTITY AS numeric(18,2))) ,
ds.BARCODE,
(CAST(ds.QTY AS numeric(18,2))) as [ClosingStock]
from [iBillDB].[dbo].detailpurchases as dp
join [iBillDB].[dbo].purchasereport as pr on dp.BARCODE=pr.voucherno
join [iBillDB].[dbo].detailsale as ds on ds.ITEMN=dp.ITEMN
join [iBillDB].[dbo].salesreport as sr on ds.BARCODE=sr.voucherno
where ds.T='R'
and dp.ITEMN='106'
group by dp.ITEMNAME,dp.QUANTITY,ds.QTY,dp.BARCODE,ds.BARCODE;
我得到的结果如下:
ITEMNAME BARCODE cs BARCODE ClosingStock 5星 10.1G 5/- 0025 108.00 0225 1.00 5星 10.1G 5/- 0025 108.00 0227 1.00 5星 10.1G 5/- 0070 108.00 0225 1.00 5星 10.1G 5/- 0070 108.00 0227 1.00 5星 10.1G 5/- 0025 108.00 0218 18.00 5星 10.1G 5/- 0025 108.00 0291 18.00 5星 10.1G 5/- 0070 108.00 0218 18.00 5星 10.1G 5/- 0070 108.00 0291 18.00 5星 10.1G 5/- 0025 108.00 0214 2.00 5星 10.1G 5/- 0025 108.00 0236 2.00 5星 10.1G 5/- 0025 108.00 0293 2.00 5星 10.1G 5/- 0070 108.00 0214 2.00 5星 10.1G 5/- 0070 108.00 0236 2.00 5星 10.1G 5/- 0070 108.00 0293 2.00 5星 10.1G 5/- 0025 108.00 0232 4.00 5星 10.1G 5/- 0070 108.00 0232 4.00 5星 10.1G 5/- 0025 108.00 0220 5.00 5星 10.1G 5/- 0025 108.00 0231 5.00 5星 10.1G 5/- 0025 108.00 0235 5.00 5星 10.1G 5/- 0070 108.00 0220 5.00 5星 10.1G 5/- 0070 108.00 0231 5.00 5星 10.1G 5/- 0070 108.00 0235 5.00 5星 10.1G 5/- 0021 144.00 0225 1.00 5星 10.1G 5/- 0021 144.00 0227 1.00 5星 10.1G 5/- 0021 144.00 0218 18.00 5星 10.1G 5/- 0021 144.00 0291 18.00 5星 10.1G 5/- 0021 144.00 0214 2.00 5星 10.1G 5/- 0021 144.00 0236 2.00 5星 10.1G 5/- 0021 144.00 0293 2.00 5星 10.1G 5/- 0021 144.00 0232 4.00 5星 10.1G 5/- 0021 144.00 0220 5.00 5星 10.1G 5/- 0021 144.00 0231 5.00 5星 10.1G 5/- 0021 144.00 0235 5.00 5星 10.1G 5/- 0039 180.00 0225 1.00 5星 10.1G 5/- 0039 180.00 0227 1.00 5星 10.1G 5/- 0039 180.00 0218 18.00 5星 10.1G 5/- 0039 180.00 0291 18.00 5星 10.1G 5/- 0039 180.00 0214 2.00 5星 10.1G 5/- 0039 180.00 0236 2.00 5星 10.1G 5/- 0039 180.00 0293 2.00 5星 10.1G 5/- 0039 180.00 0232 4.00 5星 10.1G 5/- 0039 180.00 0220 5.00 5星 10.1G 5/- 0039 180.00 0231 5.00 5星 10.1G 5/- 0039 180.00 0235 5.00 5星 10.1G 5/- 0044 270.00 0225 1.00 5星 10.1G 5/- 0044 270.00 0227 1.00 5星 10.1G 5/- 0044 270.00 0218 18.00 5星 10.1G 5/- 0044 270.00 0291 18.00 5星 10.1G 5/- 0044 270.00 0214 2.00 5星 10.1G 5/- 0044 270.00 0236 2.00 5星 10.1G 5/- 0044 270.00 0293 2.00 5星 10.1G 5/- 0044 270.00 0232 4.00 5星 10.1G 5/- 0044 270.00 0220 5.00 5星 10.1G 5/- 0044 270.00 0231 5.00 5星 10.1G 5/- 0044 270.00 0235 5.00 5星 10.1G 5/- 0014 4860.00 0225 1.00 5星 10.1G 5/- 0014 4860.00 0227 1.00 5星 10.1G 5/- 0015 4860.00 0225 1.00 5星 10.1G 5/- 0015 4860.00 0227 1.00 5星 10.1G 5/- 0014 4860.00 0218 18.00 5星 10.1G 5/- 0014 4860.00 0291 18.00 5星10.1G 5/- 0015 4860.00 0218 18.00 5星 10.1G 5/- 0015 4860.00 0291 18.00 5星 10.1G 5/- 0014 4860.00 0214 2.00 5星 10.1G 5/- 0014 4860.00 0236 2.00 5星 10.1G 5/- 0014 4860.00 0293 2.00 5星 10.1G 5/- 0015 4860.00 0214 2.00 5星10.1G 5/- 0015 4860.00 0236 2.00 5星 10.1G 5/- 0015 4860.00 0293 2.00 5星 10.1G 5/- 0014 4860.00 0232 4.00 5星 10.1G 5/- 0015 4860.00 0232 4.00 5星 10.1G 5/- 0014 4860.00 0220 5.00 5星 10.1G 5/- 0014 4860.00 0231 5.00 5星 10.1G 5/- 0014 4860.00 0235 5.00 5星10.1G 5/- 0015 4860.00 0220 5.00 5星 10.1G 5/- 0015 4860.00 0231 5.00 5星 10.1G 5/- 0015 4860.00 0235 5.00 5星 10.1G 5/- 0009 90.00 0225 1.00 5星 10.1G 5/- 0009 90.00 0227 1.00 5星 10.1G 5/- 0034 90.00 0225 1.00 5星 10.1G 5/- 0034 90.00 0227 1.00 5星 10.1G 5/- 0009 90.00 0218 18.00 5星 10.1G 5/- 0009 90.00 0291 18.00 5星 10.1G 5/- 0034 90.00 0218 18.00 5星 10.1G 5/- 0034 90.00 0291 18.00 5星 10.1G 5/- 0009 90.00 0214 2.00 5星 10.1G 5/- 0009 90.00 0236 2.00 5星 10.1G 5/- 0009 90.00 0293 2.00 5星 10.1G 5/- 0034 90.00 0214 2.00 5星 10.1G 5/- 0034 90.00 0236 2.00 5星 10.1G 5/- 0034 90.00 0293 2.00 5星 10.1G 5/- 0009 90.00 0232 4.00 5星 10.1G 5/- 0034 90.00 0232 4.00 5星 10.1G 5/- 0009 90.00 0220 5.00 5星 10.1G 5/- 0009 90.00 0231 5.00 5星 10.1G 5/- 0009 90.00 0235 5.00 5星 10.1G 5/- 0034 90.00 0220 5.00 5星 10.1G 5/- 0034 90.00 0231 5.00 5星 10.1G 5/- 0034 90.00 0235 5.00在上述结果中,第 2 列是购买的 BillNo,第 3 列是购买的数量 第 4 列是 BillNo of Sales,第 5 列是售出数量
我的评估在这里,同时总结值重复两次。
预期结果是: 10647
实际结果是: 117243
【问题讨论】:
-
我已经删除了 MySQL 标签,因为这显然是针对 SQL Server,而不是 MySQL。我还删除了 VB.net 和 Visual Studio 标记,因为它们与问题无关。我已经添加了 SQL 标记。
-
@ThorstenKettner VB.NET 标签可能同样重要,如果不是更重要的话——查询是通过连接文本框内容而不是使用日期参数来创建的。最有可能意外的字符串格式导致过滤器不正确
-
@Panagiotis Kanavos:你的意思是
DATE1.Text和DATE2.Text可能包含无效的日期,比如混淆了日期和月份?可能是这样,但这些字符串是来自 VB 还是来自任何其他来源都没有关系。无论如何,查询的问题是加入一切,然后尝试从模糊的中间结果中提取有意义的东西:-) -
我相信,如果您使用准备好的数据发布指向dbfiddle.uk 或sqlfiddle.com 的链接,您会得到更好的响应。
标签: sql sql-server vb.net dynamic-sql