繁体   English   中英

联合所有查询

[英]Union All Query

我有两个表priceliststock 这些表具有以下列

Pircelistitemno,batchno,mrp,rate Stock表有itemo,mrp,batchno,npr,stock

现在我要从pricelist选择itemno,batchno,mrp,rate以及stock表中的avg(npr),sum(stock) 所以我尝试了这个

SELECT itemno, 
       salesrate, 
       mrp, 
       batchno, 
       0 AS avgnpr, 
       0 AS stock 
FROM   pricelist 
UNION ALL 
SELECT 0        AS itemno, 
       0        AS salesrate, 
       0        AS mrp, 
       ''       AS batchno, 
       Avg(npr) AS avgnpr, 
       Sum(stock) 
FROM   stock 
GROUP  BY itemno, 
          mrp, 
          batchno 

上面的查询重调错误的reslut

但是现在我正在使用这个:

   Dim Rdr As DataTableReader = Nothing

        SELECT itemno, 
               batchno, 
               mrp, 
               rate 
        FROM   pricelist 

     Rdr = GlobalAppSetup.Mthds.ExecuteQry(xQry)

       While Rdr.Read

           Using rdr1 As DataTableReader = GlobalAppSetup.Mthds.ExecuteQry(
           "select avg(npr) as avgnpr,sum(stock) as stock from stock where itemno=" & 
Rdr.Item("itemno") & " and mrp = " & CDbl(Rdr.Item("mrp")) & " and batchno='" & Trim(Rdr.Item("batchno")) & "' group by itemno,mrp,batchno")

                            If rdr1.Read Then

                        txt.Text = Rdr.Item("avgnpr")

                       End If
                        End Using

与上面的查询查询内部

如何在单个查询中获取itemno,batchno,mrp,rate,avg(npr),sum(stock)这些值

谢谢

我正在使用Postgresql版本9.3前端Vb.Net 2008

尝试这个

select p.itemno, p.batchno, p.mrp, p.rate, 
       avg(s.npr) as npr,sum(s.stock) as total
  from pricelist p,stock s
 where p.itemno=s.itemno;

似乎您在寻找内部联接而不是全部并集。 一个并集全部接受两个或多个查询并将它们加在一起(即,查询1获得10行,而查询2获得10行,您将所有它们合并并获得20行)。

使用内部联接,使用相同的示例,您将仅获得10行,但可以合并每个表中的数据。 不要忘记使用“分组依据”,以便为每个项目获得一行-在分组依据中,您必须包括select语句中但未在avg或sum之类的分组函数中使用的所有列。 尝试这个:

select p.itemno, p.batchno, p.mrp, p.rate, 
       avg(s.npr) as npr,sum(s.stock) as total
  from pricelist p
  join stock s on s.itemno to p.itemno
  group by p.itemno, p.batchno, p.mrp, p.rate

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM