首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

为什么这句话会报错?该如何处理

2012-02-16 
为什么这句话会报错?这句话报列名MCYL无效,为什么?selectDateStartasFYRQ,PharmacologicalCodeasXMBH,dbo.

为什么这句话会报错?
这句话报列名   'MCYL '   无效,为什么?

select
           
              DateStart   as   FYRQ   ,
              PharmacologicalCode   as     XMBH,
              dbo.h_DocAdviceItems.ChargeItemName   as   XMMC,
              dbo.h_DocAdviceItems.FeeTypeID   as   FLDM,
              dbo.h_DocAdviceItems.Specification   as   YPGG,
              dbo.h_DocAdviceItems.RetailPrice   as   JG,
              [MCYL]=
                        case   when   dbo.h_DocAdviceItems.FeeTypeID   =14   then   cast((DateStopped   -DateStart   )   as   int)
                                  when   dbo.h_DocAdviceItems.FeeTypeID <> 14   then   cast((DateStopped   -DateStart   )   as   int)*dbo.h_DocAdviceItems.DailyFrequency
                        end   ,
            JE   =   dbo.h_DocAdviceItems.RetailPrice*[MCYL]
from   dbo.h_DocAdviceItems   inner   join   dbo.b_ChargeItems  
          on   dbo.h_DocAdviceItems.ChargeItemID=dbo.b_ChargeItems.ChargeItemID
where   DocAdviceID=1158


[解决办法]
在MS SQL中,計算列不能直接拿來用。
[解决办法]
select

DateStart as FYRQ ,
PharmacologicalCode as XMBH,
dbo.h_DocAdviceItems.ChargeItemName as XMMC,
dbo.h_DocAdviceItems.FeeTypeID as FLDM,
dbo.h_DocAdviceItems.Specification as YPGG,
dbo.h_DocAdviceItems.RetailPrice as JG,
[MCYL]=
case when dbo.h_DocAdviceItems.FeeTypeID =14 then cast((DateStopped -DateStart ) as int)
when dbo.h_DocAdviceItems.FeeTypeID <> 14 then cast((DateStopped -DateStart ) as int)*dbo.h_DocAdviceItems.DailyFrequency
end ,
JE = dbo.h_DocAdviceItems.RetailPrice*
( case when dbo.h_DocAdviceItems.FeeTypeID =14 then cast((DateStopped -DateStart ) as int)
when dbo.h_DocAdviceItems.FeeTypeID <> 14 then cast((DateStopped -DateStart ) as int)*dbo.h_DocAdviceItems.DailyFrequency
end)
from dbo.h_DocAdviceItems inner join dbo.b_ChargeItems
on dbo.h_DocAdviceItems.ChargeItemID=dbo.b_ChargeItems.ChargeItemID
where DocAdviceID=1158
[解决办法]
或者

Select
*,
JG * MCYL As JE
From
(
select

DateStart as FYRQ ,
PharmacologicalCode as XMBH,
dbo.h_DocAdviceItems.ChargeItemName as XMMC,
dbo.h_DocAdviceItems.FeeTypeID as FLDM,
dbo.h_DocAdviceItems.Specification as YPGG,
dbo.h_DocAdviceItems.RetailPrice as JG,
[MCYL]=
case when dbo.h_DocAdviceItems.FeeTypeID =14 then cast((DateStopped -DateStart ) as int)
when dbo.h_DocAdviceItems.FeeTypeID <> 14 then cast((DateStopped -DateStart ) as int)*dbo.h_DocAdviceItems.DailyFrequency


end
from dbo.h_DocAdviceItems inner join dbo.b_ChargeItems
on dbo.h_DocAdviceItems.ChargeItemID=dbo.b_ChargeItems.ChargeItemID
where DocAdviceID=1158
) A
[解决办法]
roy_88(中国风_燃烧你的激情!!!) ( ) 信誉:100 Blog 加为好友 2007-04-05 17:27:21 得分: 0


这句话报列名 'MCYL ' 无效,为什么?

这一句很明显了MCYL是那个表的列(楼主改为数据就不会出错了)


改为12123数字或小数1.00
---------

暈,關鍵問題在於他的代碼肯定是不能這麼改的撒。

最根本的原因是“計算列不能直接拿來用”。

热点排行