Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TSQL如何在Case语句中将varchar转换为数值_Sql_Sql Server_Tsql - Fatal编程技术网

TSQL如何在Case语句中将varchar转换为数值

TSQL如何在Case语句中将varchar转换为数值,sql,sql-server,tsql,Sql,Sql Server,Tsql,这是我的问题。我想采用[Market Value]案例表达式,并将其添加到“Certified”案例表达式中 DECLARE @AS_OF_DATE DATE SET @AS_OF_DATE = '01/27/2016' SELECT 'AS OF DATE' = @AS_OF_DATE , A.AcctNbr , A.CUSIPNumber , B.Desc1 , B.Symbol , 'SEC TYPE' = RTRIM (B.SecType)

这是我的问题。我想采用[Market Value]案例表达式,并将其添加到“Certified”案例表达式中

  DECLARE @AS_OF_DATE DATE
SET @AS_OF_DATE = '01/27/2016'

SELECT
    'AS OF DATE'    = @AS_OF_DATE   
,   A.AcctNbr
,   A.CUSIPNumber
,   B.Desc1
,   B.Symbol
,   'SEC TYPE'  = RTRIM (B.SecType)+B.CmpQual+B.SecQual
,   A.AcctType
,   A.LocMemo
,   A.BegSdQuantity
,   B.ClosePrice
,   [MARKET VALUE]  = (CASE WHEN RTRIM (B.SECTYPE)+B.CmpQual+B.SecQual IN ('A01', 'A02', 'B01', 'B02', 'C01', 'C02', 'F01', 'F02', 'F03',
    'F04', 'F05', 'F06', 'G01', 'G02', 'G03', 'G04', 'H01', 'H02', 'T01', '501', '502', '503', '504', '601', '602', '603')
    THEN CONVERT(DECIMAL(25,3),A.BegSdQuantity * B.ClosePrice)
    ELSE CONVERT(DECIMAL(25,3),A.BegSdQuantity /100 * B.ClosePrice) END)
,   'TOTAL DEBIT'   = C.SETTLEBalance
,   'HYPOTHECATION' = C.SETTLEBalance * 1.40
,   'CERTIFIED'     =  (CASE WHEN ((('MARKET VALUE') < (C.SETTLEBalance * 1.40)) OR
                        (C.SETTLEBalance * 1.40 = '0.00')) THEN 'CERTIFIED'
                        ELSE 'EXCEPTION'
                        END)

FROM vw_Table A
INNER join vw_Table B on A.FirmCUSIPId = B.FirmCUSIPId
    AND @AS_OF_DATE between a.EffectiveDate and a.ExpirationDate
    AND @AS_OF_DATE between b.EffectiveDate and b.ExpirationDate
INNER JOIN vw_Table C ON A.FirmAccountId = C.FirmAccountId
    AND @AS_OF_DATE BETWEEN C.EffectiveDate AND C.ExpirationDate
声明@AS\u OF\u DATE
设置@AS_OF_DATE='01/27/2016'
挑选
“截止日期”=@截止日期
,A.AcctNbr
,A.CUSIPNumber
,B.Desc1
,B.符号
,“SEC TYPE”=RTRIM(B.secttype)+B.CmpQual+B.SecQual
,A.AcctType
,A
,A.begsd数量
,B.价格
,[市场价值]=(当RTRIM(B.secttype)+B.CmpQual+B.SecQual位于('A01','A02','B01','B02','C01','C02','F01','F02','F03',时,
‘F04’、‘F05’、‘F06’、‘G01’、‘G02’、‘G03’、‘G04’、‘H01’、‘H02’、‘T01’、‘501’、‘502’、‘503’、‘504’、‘601’、‘602’、‘603’)
然后转换(十进制(25,3),A.BegSdQuantity*B.ClosePrice)
ELSE转换(十进制(25,3),A.BegSdQuantity/100*B.ClosePrice)结束)
,“借方总额”=C.结算平衡
,“抵押”=C.结算平衡*1.40
“认证”=(当((“市场价值”)<(C.SETTLEBalance*1.40)或
(C.SETTLEBalance*1.40='0.00'))然后“认证”
其他“例外”
(完)
来自vw_表A
A.FirmCUSIPId=B.FirmCUSIPId上的内部联接vw_表B
以及介于a.EffectiveDate和a.ExpirationDate之间的@AS_OF_日期
和@AS_OF_DATE介于b.EffectiveDate和b.ExpirationDate之间
A.FirmAccountId=C.FirmAccountId上的内部联接vw_表C
以及C.EffectiveDate和C.ExpirationDate之间的@AS_OF_日期
在上面运行此查询时,我收到错误消息:“将数据类型varchar转换为数值时出错”

有没有想过我该怎么解决这个问题

谢谢,这里

CASE WHEN ((('MARKET VALUE') < (C.SETTLEBalance * 1.40))

但是在不知道你桌子上的声明的情况下,这是在读一个神奇的玻璃球

您有
的“市场价值”
,与数字
C.SETTLEBalance*1.40='0.00'
相比,它是
varchar
?如果没有模式,这个问题就无法解释。我不知道为什么我会因为提出问题而被否决。这里不是每个人都是专家。请不要认为每个提问的人都知道如何查询,甚至不知道SQL应该如何工作。我试图在不泄露公司安全的情况下,尽可能多地为问题添加内容。我用CTE算出了这一点,我将在下面发布我的答案。
CONVERT(DECIMAL(25,3),A.BegSdQuantity) * B.ClosePrice