0

私のストアド プロシージャでは、3 つのテーブルからデータを取得しましたが、次のエラーが発生しました。

データ型 varchar から数値への変換中にエラーが発生しました。

私は問題があると思います:-

'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  
4

2 に答える 2

2

値を返そうとしている場合は、のNULL引用符を削除する必要があり'NULL'ます。そうでない場合は、を返しvarcharます。これは、おそらく実行しようとしていることではありません。

私の仮定が正しければ、これはあなたのクエリがどのように見えるべきかです。

...NULL AS NAME, NULL AS DATE, NULL AS AMOUNT, NULL AS DEPARTMENT,...
于 2013-03-18T18:03:40.170 に答える
0

問題は実際には列にあると思いAMOUNTます-最初のクエリで(文字列)を選択NULLし、2番目のクエリで数値結果に結合しようとしています。ユニオンで実際の値を使用したい場合NULLは、参照からアポストロフィを外してNULLください。

于 2013-03-18T18:09:51.047 に答える