请教一条sql的case语句!!!急啊~ ( 积分: 50 )

  • 主题发起人 主题发起人 蛊惑妖言
  • 开始时间 开始时间

蛊惑妖言

Unregistered / Unconfirmed
GUEST, unregistred user!
这个是写在Query.sql里的
select sjwcrq,ksgzrq,jhwcrq,sczlh,zwmc,jh,sxrq,wxzt,datediff( day,sxrq,sjwcrq) as wqgzr,case when (sjwcrq-ksgzrq)>(jhwcrq-ksgzrq) then
''提前'' when (sjwcrq-ksgzrq)<(jhwcrq-ksgzrq) then
''延后'' else
''按时''end as wxzk from aote_gzk
括号里的是日期型,这条能够运行但是字段wxzk没有显示出来,不知道错在哪里,请各位大侠帮我看看.总之意思是这样,其他方法能实现也行.
 
这个是写在Query.sql里的
select sjwcrq,ksgzrq,jhwcrq,sczlh,zwmc,jh,sxrq,wxzt,datediff( day,sxrq,sjwcrq) as wqgzr,case when (sjwcrq-ksgzrq)>(jhwcrq-ksgzrq) then
''提前'' when (sjwcrq-ksgzrq)<(jhwcrq-ksgzrq) then
''延后'' else
''按时''end as wxzk from aote_gzk
括号里的是日期型,这条能够运行但是字段wxzk没有显示出来,不知道错在哪里,请各位大侠帮我看看.总之意思是这样,其他方法能实现也行.
 
是單引號吧???
 
双引号的问题?
语句貌似没有问题。
 
实际上是Result := 'select sjwcrq,ksgzrq,jhwcrq,sczlh,zwmc,jh,sxrq,wxzt,datediff(day,sxrq,sjwcrq) as wqgzr,case when (sjwcrq-ksgzrq)>(jhwcrq-ksgzrq) then
''提前'' when (sjwcrq-ksgzrq)<(jhwcrq-ksgzrq) then
''延后'' else
''按时''end as wxzk from aote_gzk '
中午字是用的两个但引号,用""或''会报错
 
strSQL:='select sjwcrq,ksgzrq,jhwcrq,sczlh,zwmc,jh,sxrq,wxzt,datediff( day,sxrq,sjwcrq) as wqgzr,case when (sjwcrq-ksgzrq)>(jhwcrq-ksgzrq) then
''提前'' when (sjwcrq-ksgzrq)<(jhwcrq-ksgzrq) then
''延后'' else
''按时''end as wxzk from aote_gzk
';
with Querydo
begin
Close;
SQL.Clear;
SQL.Add(Format(strSQL));
Open;
end;
楼主试试看,也可以直接赋值给Query.Text[:)]
 
select sjwcrq,ksgzrq,jhwcrq,sczlh,zwmc,jh,sxrq,wxzt,datediff( day,sxrq,sjwcrq) as wqgzr,case when sjwcrq>jhwcrq then
''提前'' when sjwcrq<jhwcrq then
''延后'' else
''按时''end as wxzk from aote_gzk
 
对,如果直接写在Query.sql里的,则用单引号。
如果是DELPHI中的,则是双引号。
 
strSQL:='select sjwcrq,ksgzrq,jhwcrq,sczlh,zwmc,jh,sxrq,wxzt,datediff( day,sxrq,sjwcrq) as wqgzr,case when (DateDiff(day,sjwcrq,ksgzrq))>(DateDiff(day,jhwcrq,ksgzrq)) then
''提前'' when (DateDiff(day,sjwcrq,ksgzrq))<(DateDiff(day,jhwcrq,ksgzrq)) then
''延后'' else
''按时''end as wxzk from aote_gzk
';
这句应该对了,用了[red]DateDiff[/red]
 
我试过Endy.Vee那样,但报的错居然是string literal may have at most at 255 elements
是Query.sql只有255个字符啊?
 
又一个来散分的.
 
仙剑奇侠的方法
dBGRID的wczk还是没有显示
 
嗬嗬,不好意思,我没有去算他的长度,你之间把他分开就行了
strSQL:='select sjwcrq,ksgzrq,jhwcrq,sczlh,zwmc,jh,sxrq,wxzt,datediff( day,sxrq,sjwcrq)'
+' as wqgzr,case when (DateDiff(day,sjwcrq,ksgzrq))>(DateDiff(day,jhwcrq,ksgzrq)) '
+'then
''提前'' when (DateDiff(day,sjwcrq,ksgzrq))<(DateDiff(day,jhwcrq,ksgzrq)) '
+'then
''延后'' else
''按时''end as wxzk from aote_gzk';
 
谢谢各位!我已经解决了,太感谢大家了
 
多人接受答案了。
 
后退
顶部