请教! convert 能实现这样的转换吗?!

hmzgz81 2003-12-20 11:22:51
我是想如果我的表里面的数据是撤消状态则其金额表示为------ 即:

序号 金额 状态
1 100 销售
2 ---- 撤消
...全文
68 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
hmzgz81 2003-12-20
  • 打赏
  • 举报
回复
Query2Str :=' if object_id(''tempdb..#temp'') is not null DROP TABLE #temp '+
' select identity(int,1,1) as 序列, aa.*,cast(100*aa.销售金额/bb.合计销售金额 as varchar)+''%'' as 比例 '+
' into #temp from '+
' (SELECT d.ID, a.销售日期,(select 姓名 from 用户 d where a.制表= d.ID ) as 销售代表, '+
' (select b.订货单号 from 订货单 b where a.销售ID=b.销售ID) as 订货单号, a.销售单号, '+
' a.相关单据号 as 撤消单号, '+
' (case when 状态=''销售'' then cast(金额 as varchar) when 状态=''撤消'' then ''-----'' else null end) as 销售金额 '+
' FROM 销售单 a LEFT OUTER JOIN '+
' 用户 b ON a.制表 = b.ID LEFT OUTER JOIN '+
' 用户与组 c ON c.用户号 = b.ID LEFT OUTER JOIN '+
' 用户组 d ON d.ID = c.组号 '+
' where (a.状态=''销售'' or a.状态=''撤消'') and 销售日期 between '''+
DateTimetostr(DateTimePicker1.Date - 1) +''' and ''' + DateTimetostr(DateTimepicker2.Date)+ '''and d.ID= '''+
Datamodule2.ADOQuery1.FieldByName('ID').AsString+''') aa,'+
' (select sum(case 状态 when ''销售'' then 金额 else null end) as 合计销售金额 from 销售单'+
' where 销售日期 between '''+
DateTimetostr(DateTimePicker1.Date - 1) +''' and ''' + DateTimetostr(DateTimepicker2.Date)+ '''and 制表= '''+
Datamodule2.ADOQuery1.FieldByName('ID').AsString+''') bb'+
' select * from #temp ';

显示的网格为cxGrid
wzh1215 2003-12-20
  • 打赏
  • 举报
回复
上面的在SQL中应该没有问题,你把delphi程序列出来看看!
wzh1215 2003-12-20
  • 打赏
  • 举报
回复
(case when 状态='撤消' then '----' else cast(金额 as varchar) end)

(case 状态 when '撤消' then '----' else cast(金额 as varchar) end)
--没有区别
hmzgz81 2003-12-20
  • 打赏
  • 举报
回复
怎么我 吧这句话放到delphi 里面就会报错啊 ?
blackteason 2003-12-20
  • 打赏
  • 举报
回复
Try this:
select 序号,(case when 状态 ='撤消' then '----' else convert(char(20),金额) end)
as 金额,状态
from TABLE
[where condition]
hmzgz81 2003-12-20
  • 打赏
  • 举报
回复
(case when 状态='撤消' then '----' else cast(金额 as varchar) end)

(case 状态 when '撤消' then '----' else cast(金额 as varchar) end)

有什么区别?
txlicenhe 2003-12-20
  • 打赏
  • 举报
回复
(case when 状态 ='撤消' then '----' else cast(金额 as varchar) end)


cast(金额 as varchar) !!!!!
hmzgz81 2003-12-20
  • 打赏
  • 举报
回复
楼上的兄弟! 不行啊! 报错

将 varchar 值 '70000.00' 转换为数据类型为 int 的列时发生语法错误。
警告: 聚合或其它 SET 操作消除了空值。
wzh1215 2003-12-20
  • 打赏
  • 举报
回复
SELECT d.ID as 组ID, a.销售日期,(select 姓名 from 用户 d where a.制表= d.ID ) as 销售代表,
(select b.订货单号 from 订货单 b where a.销售ID=b.销售ID) as 订货单号, a.销售单号,
a.相关单据号 as 撤消单号,
(case 状态 when '撤消' then '----' else cast(金额 as varchar) end) as 销售金额
FROM 销售单 a LEFT OUTER JOIN
用户 b ON a.制表 = b.ID LEFT OUTER JOIN
用户与组 c ON c.用户号 = b.ID LEFT OUTER JOIN
用户组 d ON d.ID = c.组号
where (a.状态='销售' or a.状态='撤消')
hmzgz81 2003-12-20
  • 打赏
  • 举报
回复
那应该怎么转啊 ?
dlpseeyou 2003-12-20
  • 打赏
  • 举报
回复
可以的
hmzgz81 2003-12-20
  • 打赏
  • 举报
回复
SELECT d.ID as 组ID, a.销售日期,(select 姓名 from 用户 d where a.制表= d.ID ) as 销售代表,
(select b.订货单号 from 订货单 b where a.销售ID=b.销售ID) as 订货单号, a.销售单号,
a.相关单据号 as 撤消单号,
(case 状态 when '撤消' then '----' else 金额 end) as 销售金额
FROM 销售单 a LEFT OUTER JOIN
用户 b ON a.制表 = b.ID LEFT OUTER JOIN
用户与组 c ON c.用户号 = b.ID LEFT OUTER JOIN
用户组 d ON d.ID = c.组号
where (a.状态='销售' or a.状态='撤消')
hmzgz81 2003-12-20
  • 打赏
  • 举报
回复
我的 ‘金额’字段是money 类型的! 能转换成 varchar 型吗?
victorycyz 2003-12-20
  • 打赏
  • 举报
回复
贴出你自己写的语句看看。
dlpseeyou 2003-12-20
  • 打赏
  • 举报
回复
select 序号,(case when 状态 ='撤消' then '----'
else isnull(cast(金额 as varchar(12)),'0') end)
as 金额,状态
from 表名
hmzgz81 2003-12-20
  • 打赏
  • 举报
回复
将cast(金额 as varchar) 换成 金额 又报错:
不允许从数据类型 varchar 到 money 的隐性转换。请使用 CONVERT 函数来运行此查询。
hmzgz81 2003-12-20
  • 打赏
  • 举报
回复
报错:

将 varchar 值 '70000.00' 转换为数据类型为 int 的列时发生语法错误。
警告: 聚合或其它 SET 操作消除了空值。
hmzgz81 2003-12-20
  • 打赏
  • 举报
回复
好像不行哦 ! 我再试试!
dlpseeyou 2003-12-20
  • 打赏
  • 举报
回复
select 序号,(case when 状态 ='撤消' then '----'
else cast(金额 as varchar(6)) end)
as 金额,状态
from 表名
txlicenhe 2003-12-20
  • 打赏
  • 举报
回复
select 序号,(case when 状态 ='撤消' then '----' else cast(金额 as varchar) end)
as 金额,状态
from 表
加载更多回复(1)

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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