视图如何建立?

sdweihailh 2010-06-17 07:54:43
表A 日期 物料编码 入库数量 表B 物料编码 生效日期 失效日期 价格

2010-5-12 00 100 00 2010-5-1 2010-5-15 2

2010-5-16 00 400 00 2010-5-16 2010-5-31 2.5


2010-06-01 00 300 00 2010-6-1 2010-6-31 3


跟据表B的日期的生效价格,生成视图
日期 物料编码 入库数量 价格
2010-5-12 00 100 2
2010-5-16 00 400 2.5

2010-06-01 00 300 3
...全文
51 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
TheGodOfGods 2010-06-17
  • 打赏
  • 举报
回复

CREATE VIEW vw_GetItemInfo
AS
SELECT a.*, b.价格
FROM A a,b b
where a.日期 BETWEEN b.生效日期 AND b.失效日期
AND a.物料编码=b.物料编码
GO
jaydom 2010-06-17
  • 打赏
  • 举报
回复


use PracticeDB
go
if OBJECT_ID('tb_a') is not null
drop table tb_a
go
create table tb_a (日期 date,物料编码 varchar(5),入库数量 int)
insert into tb_a
select '2010-5-12', '00', 100 union all
select '2010-5-16', '00', 400 union all
select '2010-06-01', '00', 300
if OBJECT_ID('tb_b') is not null
drop table tb_b
go
create table tb_b(物料编码 varchar(5),生效日期 date,失效日期 date,价格 numeric(5,1))
insert into tb_b
select '00', '2010-5-1', '2010-5-15', 2 union all
select '00', '2010-5-16', '2010-5-31', 2.5 union all
select '00', '2010-6-1', '2010-6-30', 3

create view v_test
as
select a.日期,a.物料编码,a.入库数量,b.价格
from tb_a a left join tb_b b on a.物料编码=b.物料编码 and a.日期 between b.生效日期 and b.失效日期
在路上20130607 2010-06-17
  • 打赏
  • 举报
回复
膜拜 5楼····
htl258_Tony 2010-06-17
  • 打赏
  • 举报
回复
--> 生成测试数据表: [A]
IF OBJECT_ID('[A]') IS NOT NULL
DROP TABLE [A]
GO
CREATE TABLE [A] ([日期] [datetime],[物料编码] [nvarchar](10),[入库数量] [int])
INSERT INTO [A]
SELECT '2010-5-12','00','100' UNION ALL
SELECT '2010-5-16','00','400' UNION ALL
SELECT '2010-06-01','00','300'

--> 生成测试数据表: [B]
IF OBJECT_ID('[B]') IS NOT NULL
DROP TABLE [B]
GO
CREATE TABLE [B] ([物料编码] [nvarchar](10),[生效日期] [datetime],[失效日期] [datetime],[价格] [numeric](2,1))
INSERT INTO [B]
SELECT '00','2010-5-1','2010-5-15','2' UNION ALL
SELECT '00','2010-5-16','2010-5-31','2.5' UNION ALL
SELECT '00','2010-6-1','2010-6-30','3'
GO
--SELECT * FROM [A]
--SELECT * FROM [B]

-->SQL查询如下:

CREATE VIEW vw_GetItemInfo
AS
SELECT a.*, b.价格
FROM A a
JOIN b b
ON a.日期 BETWEEN b.生效日期 AND b.失效日期
AND a.物料编码=b.物料编码
GO

SELECT * FROM vw_GetItemInfo
/*
日期 物料编码 入库数量 价格
----------------------- ---------- ----------- ---------------------------------------
2010-05-12 00:00:00.000 00 100 2.0
2010-05-16 00:00:00.000 00 400 2.5
2010-06-01 00:00:00.000 00 300 3.0

(3 行受影响)
*/
在路上20130607 2010-06-17
  • 打赏
  • 举报
回复
物料编码怎么一样???这个等高手
在路上20130607 2010-06-17
  • 打赏
  • 举报
回复
丢人了 ······没看清
在路上20130607 2010-06-17
  • 打赏
  • 举报
回复
create view v_test
as
select 日期, 物料编码 ,入库数量 ,价格 from
表A
sdweihailh 2010-06-17
  • 打赏
  • 举报
回复
表A 日期 物料编码 入库数量
2010-5-12 00 100
2010-5-16 00 400
2010-06-01 00 300
表B 物料编码 生效日期 失效日期 价格
00 2010-5-1 2010-5-15 2
00 2010-5-16 2010-5-31 2.5
00 2010-6-1 2010-6-31 3

跟据表B的日期的生效价格,生成视图
日期 物料编码 入库数量 价格
2010-5-12 00 100 2
2010-5-16 00 400 2.5
2010-06-01 00 300 3

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧