请大家帮帮忙 交叉表设计问题 100分

zjjhfwh 2003-05-29 08:43:14
要求显示成

商品名称 尺码1 尺码2 尺码3
大衣a 4 4 4


尺码不确定可以增加修改

请问这样应该怎么设计

...全文
19 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
enhydraboy 2003-05-29
  • 打赏
  • 举报
回复
交叉表(多维表)本身的数据来源就是二维的事实数据。
所以,完全可以用二维的数据表结构。
但是,我觉得,你现在的设计(商品名称 尺码1 尺码2 尺码3),也并无不妥之处,因为,
1 作为一个事实数据的存放,这样的结构也很清晰
2 适当的冗余,有时确实也利大于弊,直接存放成列,在很多进一步的查询,过滤方面,会显得相对容易些
3 关键看你的需求,如果你的商品尺码的预计不会经常变化的话;但是,你想做一个通用的产品,就不同了

怎样选择,就只有你自己来分析了。
joygxd 2003-05-29
  • 打赏
  • 举报
回复
create table #ttt(纸号 varchar(4), 纸度 varchar(4), 重量 dec)
insert into #ttt values('A01' , '33' , 1000 )
insert into #ttt values('A02' , '29' , 800 )
insert into #ttt values('A01' , '31' , 700 )
declare @sql varchar(8000)
set @sql='select 纸号 '
select @sql=@sql+', sum(case when 纸度= '''+ 纸度+''' then 重量 else 0 end) as '''+纸度+''''
from (select distinct 纸度 from #ttt) as a
select @sql=@sql+' from #ttt group by 纸号 '
print @sql
exec(@sql)
yoki 2003-05-29
  • 打赏
  • 举报
回复
以上交叉报表针对结构
商品名称 尺码 数量
大衣a 尺码1 4
大衣a 尺码2 4
大衣a 尺码3 4
yoki 2003-05-29
  • 打赏
  • 举报
回复
declare @sql varchar(8000)
set @sql = 'select 商品名称'
select @sql = @sql + ',sum(case 商品名称 when '''+商品名称+''' then 数量 else 0 end) as '+尺码
from (select distinct 商品名称 from table1) as a
select @sql = @sql+' from table1 group by 商品名称,尺码'

exec(@sql)
TedZhou 2003-05-29
  • 打赏
  • 举报
回复
商品名称 尺码X XX
大衣a 尺码1 4
大衣a 尺码2 4
大衣a 尺码3 4
……

如果有冗余就分成两个或多个表
wenhao676 2003-05-29
  • 打赏
  • 举报
回复
????

随便!
liuyun2003 2003-05-29
  • 打赏
  • 举报
回复
呵呵,类似的有很多人问过了,可是我还是没有看到答案。帮你顶一下先。我顶。
zjjhfwh 2003-05-29
  • 打赏
  • 举报
回复
uo

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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