Tsql 两端行的Case语句错误
我试图找出第22行和第25行第二个开始/结束块错误的原因。这两种情况都结束了。我错过什么了吗?还有,我怎样才能进行一个查询而不是两个块Tsql 两端行的Case语句错误,tsql,Tsql,我试图找出第22行和第25行第二个开始/结束块错误的原因。这两种情况都结束了。我错过什么了吗?还有,我怎样才能进行一个查询而不是两个块 BEGIN SELECT l.partNum AS [Part Number] ,l.pricePerUOM AS [Price Per UOM] ,l.uom AS [UOM] ,SUM(CONVERT(DECIMAL(18,12), l.totalCostPerWS/l.pricePerUOM)) AS
BEGIN
SELECT
l.partNum AS [Part Number]
,l.pricePerUOM AS [Price Per UOM]
,l.uom AS [UOM]
,SUM(CONVERT(DECIMAL(18,12), l.totalCostPerWS/l.pricePerUOM)) AS [Quantity/WS] INTO #temp
FROM tbl_step s
JOIN tbl_line l ON s.stepId = l.stepId
WHERE s.revisionId = @revisionId
AND ISNUMERIC(l.totalCostPerWS) > 0
AND ISNUMERIC(l.pricePerUOM) > 0
GROUP BY l.partNum, l.pricePerUOM, l.uom
END
BEGIN
SELECT
l.partNum AS [Part Number]
,l.pricePerUOM AS [Price Per UOM]
,l.uom AS [UOM]
,CASE
WHEN l.partNum >=2 AND l.uom = 'liter' THEN (SELECT CONVERT(DECIMAL(18,12),[Quantity/WS] * 1000)
END AS [Converted]
,CASE
WHEN l.uom = 'milliliter' THEN (SELECT CONVERT(DECIMAL(18,12),[Quantity/WS] + l.pricePerUOM)
END AS [Qnty/WS + Price per UOM]
FROM #temp
JOIN tbl_line l ON s.stepId = l.stepId
JOIN tbl_step s ON l.stepId = s.stepId
WHERE
ISNUMERIC(l.totalCostPerWS) > 0
AND ISNUMERIC(l.pricePerUOM) > 0
GROUP BY l.partNum, l.pricePerUOM, l.uom
END
谢谢你的帮助。
F丢失嵌入的
选择:
,CASE
WHEN l.partNum >=2 AND l.uom = 'liter' THEN CONVERT(DECIMAL(18,12),[Quantity/WS] * 1000)
END AS [Converted]
,CASE
WHEN l.uom = 'milliliter' THEN CONVERT(DECIMAL(18,12),[Quantity/WS] + l.pricePerUOM)
END AS [Qnty/WS + Price per UOM]
你也有:
FROM #temp
JOIN tbl_line l ON s.stepId = l.stepId
JOIN tbl_step s ON l.stepId = s.stepId
我想你的意思可能是:
FROM #temp AS t
JOIN tbl_line l ON t.stepId = l.stepId
JOIN tbl_step s ON l.stepId = s.stepId
但是,这需要#temp有一个stepId列。我认为您需要退一步,从一个更简单的查询开始,因为您现在所做的一切都没有意义。使用“代码”按钮(大括号)格式化代码。更多信息:好的,我强烈建议您不要说“嘿,我有一个巨大的查询,有错误,为什么?”而应该首先向我们显示表中的数据和您想要的结果。我有99%的把握,如果你从那里开始,我们可以向你展示一种比使用临时表和双嵌套查询更有效的检索所需结果的方法。对不起,这是该网站的新手。但是我的顶部查询块工作正常,并将数据输出到临时表中。那么第二个块上的错误是什么呢?您需要包含足够的信息,以便人们能够了解发生了什么。“断开”并不能解决问题。抱歉,Aaron,我正在尝试添加一些表数据,但是添加和格式化给我带来的问题比代码本身更大:)不客气。如果这对您有效,请在接受复选框中标记答案:)