delphi能否实现用sql语句从sql的表中提取数据并进行运算
2个回答
展开全部
与DELPHI无关。数据库的表设计有一条重要规则,凡是可以通过表中数据运算可以得出的结果,都不要在表中另设字段。比如单价乘以数量等于金额,那么,金额这个字段就不就该在表中出现。由此可知,在SQL语句中,是可以进行数据运算的;比如表中如果已经有了出生日期这个字段,我们就不在需要年龄这段字段,但是用户在浏览查询的数据的时候,又需要看到年龄,因为谁也不愿意去根据出生年月来搬手指计算年龄。因此我们必须在显示数据的栅格表中添加一列,显示年龄,这个年龄就要在SQL语句中计算了。先在本代码段的BEGIN前面定义一个变量DQRQ:string;然后再代码段中给它赋值:dqrq:=dateTostr(date);
这样我们就可以写如下SQL语句:
'select zyid as 住院号,xm as 姓名,ryrq as 入院日期,(#'+dqrq+'# - csny)/365 as 年龄,'+
'jgys as 经管医生,cyrq as 出院日期,zyfy as 住院费用,'+
'fycdz as 费用承担者,jcrq as 交出日期,scr as 收取人,'+
'gdrq as 归档日期,gdr as 归档人 from bagdb '+
'where jcrq is null and scr is null and cyrq is not null and ryhs is not null '+
'ORDER BY cyrq asc';
请注意“(#'+dqrq+'# - csny)/365 as 年龄”的写法。
这是ACCESS的写法,SQL server 2000的写法有些不同。
SQL server 2000的日期值是不需要#的,它的写法如:
TB_BR_JB.RYRQ BETWEEN '''+edit15.Text+''' AND '''+edit16.Text+''' ';RYRQ(入院日期)在表中是日期型字段。
这样我们就可以写如下SQL语句:
'select zyid as 住院号,xm as 姓名,ryrq as 入院日期,(#'+dqrq+'# - csny)/365 as 年龄,'+
'jgys as 经管医生,cyrq as 出院日期,zyfy as 住院费用,'+
'fycdz as 费用承担者,jcrq as 交出日期,scr as 收取人,'+
'gdrq as 归档日期,gdr as 归档人 from bagdb '+
'where jcrq is null and scr is null and cyrq is not null and ryhs is not null '+
'ORDER BY cyrq asc';
请注意“(#'+dqrq+'# - csny)/365 as 年龄”的写法。
这是ACCESS的写法,SQL server 2000的写法有些不同。
SQL server 2000的日期值是不需要#的,它的写法如:
TB_BR_JB.RYRQ BETWEEN '''+edit15.Text+''' AND '''+edit16.Text+''' ';RYRQ(入院日期)在表中是日期型字段。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询