如果值为NULL
,我想给列提供一些值,我试过如下
insert into inward_doc_tracking_trl
(Mkey,Entry_Sr_No,N_UserMkey,N_Department,CStatus_Flag,Remarks,
CUser_Id,
U_Datetime,NStatus_Flag,Delete_Flag,
CDept_Id,
Ref_Mkey,No_Of_Days,Approved_Amount,Chq_No,Chq_dated,Chq_Bank,Chq_Amount,
Vendor_MKey,Vendor_Comp_Mkey,Project_Mkey,Program_mkey,Payment_MKey,Due_Date,Updated_Remarks,Updated_Bill_no,
Updated_Bill_Date,Updated_Bill_Amt,Party_Name,Acc_mkey,
TotalDeductions,Broker_Mkey,Customer_Mkey,Payable_Amt,Balance_Amt)
values (@inv_trl_mkey,@entry_sr_no,@Nuser_mkey,@n_department,@nstatus_flag2,@remarks,
CASE WHEN (@cuserid IS NULL) THEN 'YES' ELSE 'NO' END AS @cuserid,
@u_datetime,@nstatus_flag,@delete_flag,
CASE WHEN (@cdept_id IS NULL) THEN 'YES' ELSE 'NO' END AS @cdept_id,
@inv_hdr_mkey,@No_Of_Days,
@Approved_Amount,@Chq_No,@Chq_dated,
@Chq_Bank,@Chq_Amount,@Vendor_MKey,@Vendor_Comp_Mkey,@Project_Mkey,@Program_mkey,@Payment_MKey,@Due_Date
,@Updated_Remarks,@Updated_Bill_no,@Updated_Bill_Date,@Updated_Bill_Amt,@Party_Name,
@Acc_mkey,@TotalDeductions,@Broker_Mkey,@Customer_Mkey,@Payable_Amt,@Balance_Amt)
但是收到错误
关键字' AS'
附近的语法不正确
答案 0 :(得分:2)
从您的查询中删除" AS" ,因为您要在表格中插入,因此不再需要它。
CASE WHEN (@cuserid IS NULL) THEN 'YES' ELSE 'NO' END
答案 1 :(得分:1)
如果我理解正确,您正在使用VALUES
中声明的变量的值。如果你在那里做一些计算,你不应该这样说。
AS @cuserid
无论如何:你不能给这样的表达命名!
你必须区分
在VALUES
中,您只提供一个值列表:
VALUES(@var1,@var2,@var3+5)
将使用@var1
和@var2
的值,并将使用var3
进行一些计算。 您不需要任何别名
您可以考虑在为变量@cuserid
设置值的位置执行此逻辑。在这种情况下,您可以在VALUES
内使用此变量,而不必担心NULL
是否... {/ p>
答案 2 :(得分:0)
正如错误所示,问题与CASE
无关,而与AS
无关。因此,请删除AS
:
values (@inv_trl_mkey, @entry_sr_no, @Nuser_mkey, @n_department, @nstatus_flag2 ,@remarks,
(CASE WHEN (@cuserid IS NULL) THEN 'YES' ELSE 'NO' END),
@u_datetime,@nstatus_flag,@delete_flag,
(CASE WHEN (@cdept_id IS NULL) THEN 'YES' ELSE 'NO' END),
. . .
在VALUES()
子句中命名表达式的值是没有意义的。
答案 3 :(得分:0)
插入inward_doc_tracking_trl
(MKEY,Entry_Sr_No,N_UserMkey,N_Department,CStatus_Flag,备注,
CUser_Id,
U_Datetime,NStatus_Flag,Delete_Flag,
CDept_Id,
Ref_Mkey,NO_OF_DAYS,Approved_Amount,Chq_No,Chq_dated,Chq_Bank,Chq_Amount,
Vendor_MKey,Vendor_Comp_Mkey,Project_Mkey,Program_mkey,Payment_MKey,DUE_DATE,Updated_Remarks,Updated_Bill_no,
Updated_Bill_Date,Updated_Bill_Amt,Party_Name,Acc_mkey,
TotalDeductions,Broker_Mkey,Customer_Mkey,Payable_Amt,Balance_Amt)
选择(@ inv_trl_mkey,@ entry_sr_no,@ Nuser_mkey,@ n_department,@ nstatus_flag2,@ remarks,
情况何时(@cuserid为空)然后'是''没有'结束作为cuserid,
@ u_datetime,@ nstatus_flag,@ delete_flag,
情况何时(@cdept_id为空)那么'是'否则'否'结束为cdept_id,
@ inv_hdr_mkey,@ NO_OF_DAYS,
@ Approved_Amount,@ Chq_No,@ Chq_dated,
@ Chq_Bank,@ Chq_Amount,@ Vendor_MKey,@ Vendor_Comp_Mkey,@ Project_Mkey,@ Program_mkey,@ Payment_MKey,@ DUE_DATE
@ Updated_Remarks,@ Updated_Bill_no,@ Updated_Bill_Date,@ Updated_Bill_Amt,@ Party_Name,
@ Acc_mkey,@ TotalDeductions,@ Broker_Mkey,@ Customer_Mkey,@ Payable_Amt,@ Balance_Amt)强文
答案 4 :(得分:0)
您的陈述是正确的,如果您需要使用 AS ,请不要使用 AS ,而不是使用 Abihabi87 <强>。最重要的一点是,当列数据类型为数字时,您无法在列内保存varchar数据。为此,您需要更改列的数据类型或在列内保存数值。例如你使用'是/否'而不是你可以使用'0/1'。