视图1 记算出库(outstack)
SELECT dbo.Product.Pro_Name AS 型号, COUNT(dbo.Phone.ESN) AS 出库数
FROM dbo.Product INNER JOIN
      dbo.productbass ON dbo.Product.ProdB_ID = dbo.productbass.ProdB_ID INNER JOIN
      dbo.Phone ON dbo.Product.Pro_ID = dbo.Phone.Pro_ID
GROUP BY dbo.Product.Pro_Name, dbo.Phone.Current_Status
HAVING (dbo.Phone.Current_Status = N'出库')视图2 记算入库(stackqty)
SELECT dbo.Product.Pro_Name AS 型号, COUNT(dbo.Phone.ESN) AS 库存数
FROM dbo.Product INNER JOIN
      dbo.productbass ON dbo.Product.ProdB_ID = dbo.productbass.ProdB_ID INNER JOIN
      dbo.Phone ON dbo.Product.Pro_ID = dbo.Phone.Pro_ID
GROUP BY dbo.Product.Pro_Name, dbo.Phone.Current_Status
HAVING (dbo.Phone.Current_Status = N'入库')然后在代码中写成 
SELECT dbo.stackqty.型号, dbo.stackqty.库存数, dbo.outstack.出库数
FROM dbo.outstack RIGHT OUTER JOIN
      dbo.stackqty ON dbo.outstack.型号 = dbo.stackqty.型号因为不能在一个视图中算出在同一行中既显示入库数,出库数(不知到底有没有这种方法来产生这样一种视图)所以呢就分别做出了出库和入库的视图然后添加一个新的视图来包函那两个视图
问题是如何把上面的视图通过VB代码直接写成SQL语句呢?
谢谢!

解决方案 »

  1.   

    SELECT stackqty.型号, stackqty.库存数, outstack.出库数
    FROM (SELECT dbo.Product.Pro_Name AS 型号, COUNT(dbo.Phone.ESN) AS 出库数
    FROM dbo.Product INNER JOIN
          dbo.productbass ON dbo.Product.ProdB_ID = dbo.productbass.ProdB_ID INNER JOIN
          dbo.Phone ON dbo.Product.Pro_ID = dbo.Phone.Pro_ID
    GROUP BY dbo.Product.Pro_Name, dbo.Phone.Current_Status
    HAVING (dbo.Phone.Current_Status = N'出库')) outstack RIGHT OUTER JOIN
          (SELECT dbo.Product.Pro_Name AS 型号, COUNT(dbo.Phone.ESN) AS 库存数
    FROM dbo.Product INNER JOIN
          dbo.productbass ON dbo.Product.ProdB_ID = dbo.productbass.ProdB_ID INNER JOIN
          dbo.Phone ON dbo.Product.Pro_ID = dbo.Phone.Pro_ID
    GROUP BY dbo.Product.Pro_Name, dbo.Phone.Current_Status
    HAVING (dbo.Phone.Current_Status = N'入库')) stackqty ON outstack.型号 = stackqty.型号