【问题标题】:How to join two select queries in one statements and show it to the Datagridview in c#?如何在一个语句中加入两个选择查询并将其显示到 c# 中的 Datagridview?
【发布时间】:2017-11-22 21:57:26
【问题描述】:

我的实际问题在这里,我按照建议使用了代码。

I want to sum specific cell values by searching for similar values in textbox in c# .net

   SELECT s.partnum,partdesc,partmodel,stockin,dateofstockin, (SELECT 
   SUM(stockin)
   FROM Tbl_SpareParts
   GROUP BY partnum
   HAVING partnum = s.partnum) AS FinalTotalStockIN FROM Tbl_SpareParts s

   SELECT s.partnum,partdesc,partmodel,outstock,outstockdate,outstockcaseid_billnum,remarks, (SELECT SUM(outstock)
   FROM Tbl_OutCaseID
   GROUP BY partnum
   HAVING partnum = s.partnum) AS FinalTotalStockOut FROM Tbl_OutCaseID s

上面两个select语句如何连接?

我尝试使用 INNER JOIN,但我还希望通过使用上述第一个 sum 语句来计算上述 stockin 和 stock out 的总和。

 SELECT Tbl_SpareParts.partnum, Tbl_SpareParts.partdesc, 
 Tbl_SpareParts.partmodel, Tbl_SpareParts.stockin, 
 Tbl_SpareParts.dateofstockin, Tbl_OutCaseID.partnum AS Stockoutpartnum, 
 Tbl_OutCaseID.partdesc AS Stockoutpartdesc, 
 Tbl_OutCaseID.partmodel AS stockoutpartmodel, Tbl_OutCaseID.outstock, 
 Tbl_OutCaseID.outstockdate, Tbl_OutCaseID.outstockcaseid_billnum, 
 Tbl_OutCaseID.remarks
 FROM Tbl_SpareParts INNER JOIN
 Tbl_OutCaseID ON Tbl_SpareParts.SN = Tbl_OutCaseID.SN

【问题讨论】:

标签: c# sql .net


【解决方案1】:

我不知道您使用的是什么 DBMS,但许多主流 DBMS 都支持窗口函数和允许您定义和级联子查询的 with 子句。即使您的 DBMS 不支持这些,您也可以稍微重写查询以使其正常工作。

如果我正确理解您的问题,我认为这样的事情可能会实现您的目标:

with spare_parts as (
 SELECT
   s.partnum,partdesc,partmodel,stockin,dateofstockin,sn,
   sum (stockin) over (partition by partnum) as stockin_total
 FROM Tbl_SpareParts s
),
cases as (
 SELECT
   s.partnum,partdesc,partmodel,outstock,outstockdate,outstockcaseid_billnum,remarks,
   sn, SUM(outstock) over (partition by partnum) as outstock_total
 FROM Tbl_OutCaseID
)
select
  s.partnum, s.partdesc, s.partmodel, s.stockin, 
  s.dateofstockin, s.stockin_total,
  c.partnum AS Stockoutpartnum, 
  c.partdesc AS Stockoutpartdesc, 
  c.partmodel AS stockoutpartmodel, c.outstock, 
  c.outstockdate, c.outstockcaseid_billnum, 
  c.remarks, c.outstock_total
from
  spare_parts s
  join cases c on s.sn = c.sn

另一种可能性是您希望将每个零件的进货和缺货总和放在一条线上,但我不确定。如果是这种情况,则上述内容是错误的,但您可以通过在每个子查询中将窗口函数更改为普通聚合 (GROUP BY) 来实现。

【讨论】:

  • 这行得通,但是 Its not showing full datas. If there are 6 rows in "Tbl_stockin" and 4 rows in "Tbl_Stockout". Itll 只显示 4 行,因为 sn=sn。用 group by 试过了,但没用。
  • 另外,行会重复
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-05
  • 2020-03-10
  • 2015-04-16
  • 2012-07-18
  • 1970-01-01
  • 2011-08-27
相关资源
最近更新 更多