永发信息网

SQL设计问题

答案:3  悬赏:30  手机版
解决时间 2021-06-05 04:05
  • 提问者网友:爱唱彩虹
  • 2021-06-04 06:43

请教一下数据库设计方面的朋友们

下面 i.表B日期>@month*100

@month*100 为什么要*100?

这个设计是在书上的代码中看到的不太明白!

create table [dbo].[表A](
[识别号] [varchar] (30) NOT NULL PRIMARY KEY,
[日期] [int] NULL,
[金额] [decimal] (26,2) NULL DEFAULT (0)
) ON [PRIMARY]
GO

create table [dbo].[表B](
[编号] [varchar] (30) NOT NULL,
[表B日期] [int] NULL,
[是否统计] [char] (10) NULL DEFAULT ('否'),
[表B金额] [float] NULL DEFAULT (0)
) ON [PRIMARY]
GO

create procedure sf_表C
as
begin transaction
declare @month int
select @month = 日期 from 表A
-------------
update 表A set (金额) from 表B as i where i.是否统计='是' and
i.表B日期>@month*100 and i.表B日期<(@month+1)*100
group by i.编号 having i.编号=表A.识别号

最佳答案
  • 五星知识达人网友:平生事
  • 2021-06-04 07:21

哦,我猜是因为它的日期是定义为int型,而他的显示格式是20091010,要想算出一个月的记录,就要


月份*100了,


update 表A set (金额) from 表B as i where i.是否统计='是' and
i.表B日期>@month*100 and i.表B日期<(@month+1)*100
group by i.编号 having i.编号=表A.识别号


这句可以看出来,>@month*100 和<(@month+1)*100
都是为了提交是计算一个月的记录~

全部回答
  • 1楼网友:長槍戰八方
  • 2021-06-04 09:13
要看到那两个表的具体数据才容易解析呢
  • 2楼网友:詩光轨車
  • 2021-06-04 08:41

1substring是取字符中型,

2@month 是月

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯