如何根据行在sql查询中定义标量变量?

时间:2015-08-02 17:59:55

标签: sql-server tsql variables

我有一个名为raporal的表格,我需要在其中显示birimmaliyetenerji/metrekare

这就是我编写下面给出的查询的原因。但是我得到每个查询结果相同的结果" 1.5"。每行的结果是相同的。

我不知道如何解决这个问题。有人可以帮我这个吗?我非常需要你的帮助。

这是我的问题:

DECLARE @enerjimetrekare decimal

SET @enerjimetrekare = (select((Max(enerjiküm)-min(enerjiküm))/ Max(üretimmik))from raporal)

SELECT 
    Ürün, 
    MAX(ÜretimMik) As üretim_mik, 
    Ebat, 
    (max(enerjiküm)- min(enerjiküm)) as EnerjiTüketim,
    @enerjimetrekare * 1.5 as Birimmaliyet,
    cast(((cast(Max(enerjiküm)as decimal(5,2)))
                - cast(min(enerjiküm)as decimal(5,2)))
            / cast(Max(üretimmik)as decimal(5,2)) as numeric (36,2)) as "enerji/metrekare" 
FROM raporal    
WHERE ÜretimMik is not null and ÜretimMik<>0
GROUP BY Ürün,ebat

结果是:

BirimMaliyet | enerji/metrekare    
   1.5         | 0.74
   1.5         | 0.00
   1.5         | 0.72
   1.5         | 1.98
   1.5         | 1.68
   1.5         | 0.00
   1.5         | 1.70

我想这样表:( enerji / metrekare(根据产品)* 1,5)

  BirimMaliyet | enerji/metrekare
  1.11         | 0.74
  0.00         | 0.00
  1.08         | 0.72
  2.97         | 1.98
  2.52         | 1.68
  0.00         | 0.00
  2.55         | 1.70

1 个答案:

答案 0 :(得分:0)

试试这个(@sasfrog很好地描述了你的问题!):

SELECT
  Ürün,
  MAX(ÜretimMik) AS üretim_mik,
  Ebat,
  MAX(enerjiküm) - MIN(enerjiküm) AS EnerjiTüketim,
  ( ( MAX(enerjiküm) - MIN(enerjiküm) ) / MAX(üretimmik) ) * 1.5 AS Birimmaliyet,
  CAST((( CAST(MAX(enerjiküm) AS DECIMAL(5, 2))) - CAST(MIN(enerjiküm) AS DECIMAL(5, 2)))
  /CAST(MAX(üretimmik) AS DECIMAL(5, 2)) AS NUMERIC(36, 2)) AS [enerji/metrekare]
FROM
  raporal
WHERE
  ÜretimMik IS NOT NULL
  AND ÜretimMik <> 0
GROUP BY
  Ürün,
  ebat