日期:2014-05-17  浏览次数:20517 次

SQL 查询视图或语句 求助
SQL2008,我表如下:
A表: 商品编号,商品名称,期初数量
       A001,   book,   2
B表: 商品编号、入库数量、入库时间
      A001,   2,        2013-01
     A001,   3,        2013-02
我想使用视图或查询语句来现实:
商品编号,商品名称,入库数量合计,期初数
A001,    book,   5,           2
请问我应该怎么做?我在视图中无法实现数量的合计。谢谢!

------解决方案--------------------
----------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2013-02-27 11:02:35
-- Version:
--      Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) 
-- Jun 17 2011 00:54:03 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1, v.721)
--
----------------------------
--> 测试数据:[A]
if object_id('[A]') is not null drop table [A]
go 
create table [A](商品编号  varchar(5),商品名称 varchar(5),期初数量 int)
insert [A]
select 'A001','book',2

--> 测试数据:[B]
if object_id('[B]') is not null drop table [B]
go 
create table [B]([商品编号] varchar(5),[入库数量] int ,[入库时间] varchar(7))
insert [B]
select 'A001','2','2013-01' union all
select 'A001','3','2013-02'
--------------开始查询--------------------------
GO

CREATE VIEW test 
AS 
SELECT  b.[商品编号] ,
        SUM([入库数量]) 入库数量合计 ,
        a.期初数量 ,
        a.商品名称
FROM    [B]
        INNER JOIN [A] ON B.[商品编号] = a.[商品编号]
GROUP BY b.[商品编号] ,
        a.期初数量 ,
        a.商品名称
GO
SELECT * FROM test
----------------结果----------------------------
/* 
商品编号  入库数量合计      期初数量        商品名称
----- ----------- ----------- -----
A001  5           2           book
*/

------解决方案--------------------
可以用啊,没报错哦
------解决方案--------------------
select  AA.商品编号,AA.商品名称,isnull(BB.入库数量合计,0) 入库数量合计,AA.期初数
From  A表 AA
left Join ( Select 商品编号,sum (入库数量合计) as 入库数量合计 From    B表  Group By 商品编号) BB   On   A表.商品编号= BB.商品编号

------解决方案--------------------
引用:
select 商品编号,商品名称,
(select count(1) from b where a.商品编号=b.商品编号 group by 商品编号),初期数量 from a