0

22 行目と 25 行目で 2 番目の BEGIN/END ブロック エラーが発生する理由を突き止めようとしています。どちらの場合も END です。私は何か見落としてますか?また、2 つのブロックではなく、この 1 つのクエリを作成するにはどうすればよいでしょうか?

    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

助けてくれてありがとう。ふ

4

2 に答える 2

1

これもあります:

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 列が必要です。一歩下がって、より単純化されたクエリから始める必要があると思います。なぜなら、あなたが今やっていることの多くは意味をなさないからです。

于 2012-05-15T22:12:22.627 に答える
0

埋め込まれたを失うSELECT

,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]
于 2012-05-15T21:58:37.150 に答える