请问我要怎么设计表呀?
是要设计两张表吗?如果是做两张那做年统计会不会很麻烦呀?
10 个解决方案
#1
日期、茶叶名、单价、数量
#2
如果是一个月一变的话可以设计两个表,做统计也不会麻烦。
如果是每次录入都可能不一样则一个表就好。
如果是每次录入都可能不一样则一个表就好。
#3
价格是每月变化一次,但是单项好多,也就是说茶叶的种类会有60多种,考虑(年,月,周)报表会经常查看,所以就不知道用一个表统计好还是用两个表做统计好点
#4
空间换时间的问题。
一个表的话冗余数据多点,但是统计不需要关联表,速度会快。
如果两个表,没有数据冗余但是读取速度不如一个表快。
#5
设计4 张表吧
1. 茶叶表
茶叶代码 茶叶名称
2. 茶叶每月价格表
茶叶代码 年月 单价
3. 茶叶销售主表
销售单号 销售日期 销售员
4. 茶叶销售明细表
序号 茶叶代码 单价(自动调出) 销售数量
1. 茶叶表
茶叶代码 茶叶名称
2. 茶叶每月价格表
茶叶代码 年月 单价
3. 茶叶销售主表
销售单号 销售日期 销售员
4. 茶叶销售明细表
序号 茶叶代码 单价(自动调出) 销售数量
#6
一张表的话,应该怎么设计呢?我开始的想法用一张表,就和一楼说的那样,但是考虑到统计的时候每个小类是横向展示出来,不知道怎么做统计,所以就在纠结是不是要用两张表,一个存类别和数据,一个存单价。
能说下单表如何做统计吗?统计就如我上图那样
#7
仅供参考:
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([日期] Date,[茶叶名] nvarchar(22),[单价] decimal(18,7),[数量] int)
Insert #T
select '2017-4-1',N'龙井',1.2,10 union all
select '2017-4-2',N'龙井',1.2,20 union all
select '2017-4-3',N'龙井',1.2,30 union all
select '2017-5-1',N'龙井',2.2,10 union all
select '2017-4-1',N'普洱',7.2,100 union all
select '2017-4-2',N'普洱',7.2,200 union all
select '2017-4-3',N'普洱',7.2,300 union all
select '2017-5-1',N'普洱',9.2,100
Go
--测试数据结束
SELECT 日期 ,
MAX(CASE WHEN 茶叶名 = '龙井' THEN 数量
ELSE 0
END) AS 龙井数量 ,
MAX(CASE WHEN 茶叶名 = '龙井' THEN 单价
ELSE 0
END) AS 龙井单价,
MAX(CASE WHEN 茶叶名 = '普洱' THEN 数量
ELSE 0
END) AS 普洱数量,
MAX(CASE WHEN 茶叶名 = '普洱' THEN 单价
ELSE 0
END) AS 普洱单价
FROM #T
GROUP BY 日期
#8
做成一个类型表,一个统计表和一个流水表会不会好点?
#9
如果是我,我就用2个表,1个是库存表,1个是销售表,牺牲冗余数据
-- 库存表
茶叶代码,茶叶名称,库存单价,库存数量,日期
--销售表
茶叶代码,茶叶名称,库存单价,销售数量,销售价格,日期
这样,每个时间点都是带库存单价和销售价格的,以后不管你在什么时候统计,都不影响
-- 库存表
茶叶代码,茶叶名称,库存单价,库存数量,日期
--销售表
茶叶代码,茶叶名称,库存单价,销售数量,销售价格,日期
这样,每个时间点都是带库存单价和销售价格的,以后不管你在什么时候统计,都不影响
#10
如果,你想把你的每月库存价格都保存起来,以后查看,你就多1个表,成本表,记录每个物料,每个月的成本。
库存表的价格,取当月的价格。
销售表的价格,取库存表的价格。
这样,带成本价格,销售价格的,销售表,你在什么时候查询都是准的。。。
库存表的价格,取当月的价格。
销售表的价格,取库存表的价格。
这样,带成本价格,销售价格的,销售表,你在什么时候查询都是准的。。。
#1
日期、茶叶名、单价、数量
#2
如果是一个月一变的话可以设计两个表,做统计也不会麻烦。
如果是每次录入都可能不一样则一个表就好。
如果是每次录入都可能不一样则一个表就好。
#3
价格是每月变化一次,但是单项好多,也就是说茶叶的种类会有60多种,考虑(年,月,周)报表会经常查看,所以就不知道用一个表统计好还是用两个表做统计好点
#4
价格是每月变化一次,但是单项好多,也就是说茶叶的种类会有60多种,考虑(年,月,周)报表会经常查看,所以就不知道用一个表统计好还是用两个表做统计好点
空间换时间的问题。
一个表的话冗余数据多点,但是统计不需要关联表,速度会快。
如果两个表,没有数据冗余但是读取速度不如一个表快。
#5
设计4 张表吧
1. 茶叶表
茶叶代码 茶叶名称
2. 茶叶每月价格表
茶叶代码 年月 单价
3. 茶叶销售主表
销售单号 销售日期 销售员
4. 茶叶销售明细表
序号 茶叶代码 单价(自动调出) 销售数量
1. 茶叶表
茶叶代码 茶叶名称
2. 茶叶每月价格表
茶叶代码 年月 单价
3. 茶叶销售主表
销售单号 销售日期 销售员
4. 茶叶销售明细表
序号 茶叶代码 单价(自动调出) 销售数量
#6
价格是每月变化一次,但是单项好多,也就是说茶叶的种类会有60多种,考虑(年,月,周)报表会经常查看,所以就不知道用一个表统计好还是用两个表做统计好点
空间换时间的问题。
一个表的话冗余数据多点,但是统计不需要关联表,速度会快。
如果两个表,没有数据冗余但是读取速度不如一个表快。
一张表的话,应该怎么设计呢?我开始的想法用一张表,就和一楼说的那样,但是考虑到统计的时候每个小类是横向展示出来,不知道怎么做统计,所以就在纠结是不是要用两张表,一个存类别和数据,一个存单价。
能说下单表如何做统计吗?统计就如我上图那样
#7
仅供参考:
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([日期] Date,[茶叶名] nvarchar(22),[单价] decimal(18,7),[数量] int)
Insert #T
select '2017-4-1',N'龙井',1.2,10 union all
select '2017-4-2',N'龙井',1.2,20 union all
select '2017-4-3',N'龙井',1.2,30 union all
select '2017-5-1',N'龙井',2.2,10 union all
select '2017-4-1',N'普洱',7.2,100 union all
select '2017-4-2',N'普洱',7.2,200 union all
select '2017-4-3',N'普洱',7.2,300 union all
select '2017-5-1',N'普洱',9.2,100
Go
--测试数据结束
SELECT 日期 ,
MAX(CASE WHEN 茶叶名 = '龙井' THEN 数量
ELSE 0
END) AS 龙井数量 ,
MAX(CASE WHEN 茶叶名 = '龙井' THEN 单价
ELSE 0
END) AS 龙井单价,
MAX(CASE WHEN 茶叶名 = '普洱' THEN 数量
ELSE 0
END) AS 普洱数量,
MAX(CASE WHEN 茶叶名 = '普洱' THEN 单价
ELSE 0
END) AS 普洱单价
FROM #T
GROUP BY 日期
#8
做成一个类型表,一个统计表和一个流水表会不会好点?
#9
如果是我,我就用2个表,1个是库存表,1个是销售表,牺牲冗余数据
-- 库存表
茶叶代码,茶叶名称,库存单价,库存数量,日期
--销售表
茶叶代码,茶叶名称,库存单价,销售数量,销售价格,日期
这样,每个时间点都是带库存单价和销售价格的,以后不管你在什么时候统计,都不影响
-- 库存表
茶叶代码,茶叶名称,库存单价,库存数量,日期
--销售表
茶叶代码,茶叶名称,库存单价,销售数量,销售价格,日期
这样,每个时间点都是带库存单价和销售价格的,以后不管你在什么时候统计,都不影响
#10
如果,你想把你的每月库存价格都保存起来,以后查看,你就多1个表,成本表,记录每个物料,每个月的成本。
库存表的价格,取当月的价格。
销售表的价格,取库存表的价格。
这样,带成本价格,销售价格的,销售表,你在什么时候查询都是准的。。。
库存表的价格,取当月的价格。
销售表的价格,取库存表的价格。
这样,带成本价格,销售价格的,销售表,你在什么时候查询都是准的。。。