SQL运算符中不兼容的问题

pandev92 2014-08-28 01:51:04
新人自学SQL中,在动态行列转换发现个问题不会解决,求助于各位大大,这是我的语句
declare @text varchar(8000)
set @text='select textNo,textName'
select @text= @text+', max(case TextDate when '''+textDate+''' then score else 0 end) [' + TextDate+ ']'from (select distinct Date from text)as a
set @text=@text+'from text group by textNo,textName'
exec(@text)
提示数据类型 varchar 和 date 在 add 运算符中不兼容,其中数据库TextDate 为DATE类型,score 为float,其余都是varchar,请问该怎么修正
...全文
347 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2014-08-28
  • 打赏
  • 举报
回复
引用 5 楼 pandev92 的回复:
知道怎么修改了,我子查询改成 select distinct CONVERT(VARCHAR(50),textDate,110)as textDate from text没报错了
这样最直接,
Tiger_Zhao 2014-08-28
  • 打赏
  • 举报
回复
那么1楼中下面一个 TextDate 也加上 Convert 转换。
pandev92 2014-08-28
  • 打赏
  • 举报
回复
知道怎么修改了,我子查询改成 select distinct CONVERT(VARCHAR(50),textDate,110)as textDate from text没报错了
pandev92 2014-08-28
  • 打赏
  • 举报
回复
TextDate 是测试日期,子查询那个Date是手误打错了,自己后来发现加上了
Tiger_Zhao 2014-08-28
  • 打赏
  • 举报
回复
子查询 select distinct Date from text 中根本没有 TextDate 字段,你拼到 @text 中的 TextDate 到底是什么东西?
pandev92 2014-08-28
  • 打赏
  • 举报
回复
额,修改过后还是提示示数据类型 varchar 和 date 在 add 运算符中不兼容
發糞塗牆 2014-08-28
  • 打赏
  • 举报
回复
DECLARE @text VARCHAR(8000)
SET @text = 'select textNo,textName'
SELECT  @text = @text + ', max(case TextDate when '''
        + CONVERT(VARCHAR(10), textDate, 23) + ''' then score else 0 end) ['
        + TextDate + ']'
FROM    ( SELECT DISTINCT
                    [Date]
          FROM      [text]
        ) AS a
SET @text = @text + 'from text group by textNo,textName'
EXEC(@text)

34,588

社区成员

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

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