2013-03-18 99 views
0

在我的存储过程,我从三个表中的数据,但得到这个错误:错误转换数据类型VARCHAR到数字

Error Converting Data Type varchar to Numeric.

我认为问题出在: -

'NULL' AS DATE (in 1st query of this SP)------(1) 
CONVERT(VARCHAR, tbl_IPD.ipd_doa, 103) AS DATE (in 2nd query of this SP)-----(2) 

我的问题是:如何将(1)行转换为varchar

SELECT 
    tbl_CompanyProfile.Company_Name, tbl_CompanyProfile.Company_Address, 
    tbl_CompanyProfile.Company_ContactNo, tbl_CompanyProfile.Company_Email, 
    tbl_CompanyProfile.Company_Website, 
    'NULL' AS NAME, 'NULL' AS DATE, 
    'NULL' AS AMOUNT, 'NULL' AS DEPARTMENT, 
    0 AS Age, @from AS StartDate, @to AS EndDate 
FROM 
    tbl_CompanyProfile 

UNION ALL 

SELECT 
    '--', '--', 
    '--', '--', '--', 
    tbl_IPD.ipd_pfname + ' ' + tbl_IPD.ipd_plname AS NAME, 
    CONVERT(VARCHAR, tbl_IPD.ipd_doa, 103) AS DATE, 
    ISNULL(SUM(tbl_fee.fee_amount), 0) AS AMOUNT, 
    tblDepartment.DeptName AS DEPARTMENT, tbl_IPD.ipd_age AS Age, 
    @from AS StartDate, @to AS EndDate 
FROM    
    tbl_fee 
LEFT OUTER JOIN 
    tbl_IPD ON tbl_fee.ipd_id = tbl_IPD.ipd_id 
LEFT OUTER JOIN 
    tblDepartment ON tbl_IPD.ipd_dpt = tblDepartment.DeptId 
WHERE   
    (tbl_IPD.ipd_doa BETWEEN @from AND @to) 
GROUP BY 
    tbl_IPD.ipd_pfname, tbl_IPD.ipd_plname, tbl_IPD.ipd_doa, tblDepartment.DeptName, tbl_IPD.ipd_age 

回答

0

我觉得这个问题实际上是在AMOUNT列 - 你是在第一个查询选择NULL(字符串),并试图将其加入到数字结果在第二个查询。如果要在联合中使用实际的NULL值,请从NULL引用中删除撇号。

+0

@D赤柱Thnx寻求帮助...你找到正确答案。 – Bhavnish 2013-03-18 18:37:56

+0

上显示报告显示空值,但我们只想显示tbl_companyprofile字段..请告诉如何隐藏报告上的所有字段在上述存储过程 – Bhavnish 2013-03-18 18:47:30

+0

我不明白的问题 - 也许你应该发布一个新的问题更好地解释所需的结果。 – 2013-03-18 18:53:49

2

如果您试图返回NULL值,您应该请删除'NULL'上的引号,否则您将返回varchar,这不是您可能想要做的事情。

如果我的假设是正确的,这就是您的查询应该是什么样子。

...NULL AS NAME, NULL AS DATE, NULL AS AMOUNT, NULL AS DEPARTMENT,... 
相关问题