我有以下查询:
Declare @qty int
SET @qty = (SELECT Qty FROM StockTB WHERE ProductID='6' AND Qty=0)
if(@qty =0)
Update StockTB SET Qty=Qty+5, BatchNo='1234', ExpDate='03/11/2018' WHERE
ProductID='6' AND Qty=0
Else
INSERT INTO StockTB Values('6', '5', '1234', '03/11/2018')
以上查询工作正常。但是当我在查询中添加ELSE IF
时,它会失败。这是在ELSE IF
实施之后。
Declare @expdate date
SET @expdate =(SELECT ExpDate FROM StockTB WHERE ProductID='6' AND
ExpDate='03/11/2018')
Declare @qty int
SET @qty = (SELECT Qty FROM StockTB WHERE ProductID='6' AND Qty=0)
if(@qty =0)
Update StockTB SET Qty=Qty+5, BatchNo='1234', ExpDate='03/11/2018' WHERE
ProductID='6' AND Qty=0
Else if(@expdate='03/11/2018')
Update StockTB SET Qty=Qty+5 WHERE ProductID='6' AND ExpDate='03/11/2018'
Else
INSERT INTO StockTB Values('6', '5', '1234', '03/11/2018')
答案 0 :(得分:2)
我无法读取您的架构,但似乎" ExpDate"是约会。
您正在将其与varchar
'03/11/2018'
我不知道你的意思是11月3日还是3月11日。这两个SQL都不知道。
请尝试改为CONVERT(VARCHAR, ExpDate, 103)
:
目前:
Else if(@expdate='03/11/2018')
将其更改为:
Else if(CONVERT(VARCHAR, @expdate, 103) = '03/11/2018')
您还可以使用查询中的结果设置@expdate
值(并将其设为VARCHAR
,而非日期)
* Ps:作为参数的幻数103
表示dd/mm/yyyy
。您可以获得完整列表here。
答案 1 :(得分:0)
请试试这个
Declare @expdate date
SET @expdate =(SELECT ExpDate FROM StockTB WHERE ProductID='6' AND
ExpDate='2018/11/03')
Declare @qty int
SET @qty = (SELECT Qty FROM StockTB WHERE ProductID='6' AND Qty=0)
if(@qty =0)
Update StockTB SET Qty=Qty+5, BatchNo='1234', ExpDate='2018/11/03' WHERE
ProductID='6' AND Qty=0
Else
if(@expdate='2018/11/03')
Update StockTB SET Qty=Qty+5 WHERE ProductID='6' AND ExpDate='2018/11/03'
Else
INSERT INTO StockTB Values('6', '5', '1234', '2018/11/03')