SQL字段类型报错,求解决

sinat_41589493 2018-08-30 07:43:40

如图所示,标出来的框就是报错的字段
字段前加' ', N' ' , CONVERT, 这几种办法试过了,报同样的错
我把代码贴上来请大家帮忙看看,谢谢了
-USE [TATViewDB]
--GO
--CREATE view [dbo].[amRAD_RADIOLOGY_Full]
--AS
------------------申请时间-----------------------------
WITH ApplyDate AS (
----OutPatient
select distinct a.PlacerOrderNo 申请单号,'outpatient' 类型,PatientID 门诊号,PatientName 姓名,
' ' visitnumber,
case PatientSex when '1' then '男' else '女' end 性别,
PatientAge 年龄,
RequestDateTime 申请时间,
--DiagnosticServiceName 分类名称,
BodyPart 部位,
b.BillingItemDescription 医嘱名称,HospitalServiceDescription 所属科室
from OPDOrder a, OPDOrderItems b
where a.PlacerOrderNo=b.PlacerOrderNo
and ChargeStatus=1 and OrderStatus not in ('2','3')
UNION
ALL
----------INPATIENT---------------------
select distinct a.PlacerOrderNo 申请单号,'inpatient' 类型,a.PatientID 门诊号,a.PatientName 姓名,visitnumber,
case PatientSex when '1' then '男' else '女' end 性别,PatientAge 年龄,RequestDateTime 申请时间,
--DiagnosticServiceName 分类名称,
BodyPart 部位,
BillingItemDescription 医嘱名称,HospitalServiceDescription 所属科室
from IPDDocOrder a, IPDDocOrderItems b
where a.PlacerOrderNo=b.PlacerOrderNo
and OrderStatus>'5' )
,
---------------------------预约时间------------------------------------
AppointmentDATE AS
(
SELECT TOP (100) PERCENT RFPlacerOrderNo 申请单号,RFappointmentRequire 预约要求,min(RFCreateTime) 预约时间 FROM [172.16.10.207

].rop.dbo.ReservationForm
where RFIsCancel=0
group by RFPlacerOrderNo,RFappointmentRequire
order by RFPlacerOrderNo,RFappointmentRequire
)
,
--------------------------登记时间-----------------------------------
--SELECT a.PlacerOrderNo,b.RequestDateTime FROM RADServiceRequest a LEFT JOIN
--ApplyDate b ON a.PlacerOrderNo=b.PlacerOrderNo


---------------------------检查时间-----------------------------------------
--除了B超检查时间
CheckDate AS
(SELECT a.sheetID,CONVERT(DATE,substring(ExamDateTime,1,8))检查日期
,substring(ExamDateTime,1,4)+'-'+substring(ExamDateTime,5,2)+'-'
+substring(ExamDateTime,7,2)+' '+substring(ExamDateTime,9,2)
+':'+substring(ExamDateTime,11,2)+':'+substring(ExamDateTime,13,2) 检查时间
,b.HISRequestID 申请单号
FROM [RequestSubSub] a LEFT JOIN [Request] b
ON a.sheetID=b.sheetID)
,


------------------------------审核日期-----------------------------------
REVIEWDATE AS
(SELECT a.PlacerOrderNo 申请单号,b.FinalResultDateTime 审核日期
FROM RADServiceRequest a LEFT JOIN
RADReport b ON a.FillerOrderNo=b.FillerOrderNo
)


-------------------------result------------------------------
SELECT a.*,
b.预约时间, DATEDIFF(MINUTE,a.申请时间,b.预约时间) 申请到预约间隔时间,
c.RequestDateTime 登记时间,datediff(MINUTE,a.申请时间,c.RequestDateTime) 申请到登记间隔时间,
d.检查日期, datediff(MINUTE,b.预约时间,d.检查时间) 预约到检查间隔时间,
datediff(MINUTE,c.RequestDateTime,d.检查时间) 登记到检查间隔时间,
e.审核日期,datediff(MINUTE,d.检查时间,e.审核日期) 检查到出报告时间,b.预约要求
FROM ApplyDate a LEFT JOIN AppointmentDATE b ON a.申请单号 =b.申请单号
LEFT JOIN [RADServiceRequest] c ON a.申请时间 = c.PlacerOrderNo
LEFT JOIN CheckDate d ON a.申请单号 = d.申请单号
LEFT JOIN REVIEWDATE e ON a.申请单号 = e.申请单号
WHERE a.申请时间>'2018-07-01'
...全文
511 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinat_41589493 2018-08-31
  • 打赏
  • 举报
回复
引用 1 楼 yenange 的回复:
--上下的两个都转成 nvarchar(max) 试试。
--注:上下两个都要转
SELECT
CAST(DiagnosticServiceName AS NVARCHAR(MAX)) AS [分类名称]
FROM xxx
UNION ALL
SELECT
CAST(DiagnosticServiceName AS NVARCHAR(MAX)) AS [分类名称]
FROM yyy


上下我都转了哦,还是报同样的错
卖水果的net 版主 2018-08-31
  • 打赏
  • 举报
回复
楼主要先确定是哪一列出的问题, 也就是 MRI 这个字符串,是哪列的内容。
吉普赛的歌 版主 2018-08-30
  • 打赏
  • 举报
回复
--上下的两个都转成 nvarchar(max) 试试。
--注:上下两个都要转
SELECT
CAST(DiagnosticServiceName AS NVARCHAR(MAX)) AS [分类名称]
FROM xxx
UNION ALL
SELECT
CAST(DiagnosticServiceName AS NVARCHAR(MAX)) AS [分类名称]
FROM yyy

34,576

社区成员

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

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