我想從表中的3列計算體積並返回唯一的體積。我們有很多行與Width
,Height
和Length
相同,因此我的體積計算自然會有Volume
的重複返回值。我認爲,爲了做到這一點,我必須用OVER
,PARTITION
和CTE
的別名不允許在OVER
在OVER中使用CTE(PARTITION BY)
WITH
cteVolume (Id, Volume)
AS
(
SELECT Id, Width * Height * [Length] AS Volume FROM PackageMaterialDimensions
)
SELECT *
INTO #volumeTempTable
FROM (
SELECT pp.ID, (pp.Width * pp.Height * pp.[Length]) AS Volume,
ROW_NUMBER() OVER(PARTITION BY cte.Volume ORDER BY pp.ID DESC) rn
FROM PlanPricing pp
INNER JOIN cteVolume cte ON pp.ID = cte.Id
) a
WHERE rn = 1
SELECT * FROM #volumeTempTable
ORDER BY Volume DESC
DROP TABLE #volumeTempTable
注中引用的印象,對臨時表的原因是因爲我打算對這些數據做一些額外的工作。我也是正在調試,所以我用這些表輸出到數據窗口
這裏是什麼不對這個查詢
- 它仍然是返回重複
- 它只返回一個卷每一行
- 只有當有71000個表中的行返回約75行
我怎麼能修改此查詢基本上做到以下
- 計算容積對於表中的每一行
- SELECT行具有唯一的體積計算。 (我不希望看到的相同體積兩次在我的結果集)
編輯 - 按要求
什麼我想是
ID |卷
193 | 280
286 | 350
274 | 550
241 | 720
基本上,我想計算量的每一行的話,我想以某種方式組由以各組
請闡明「SELECT rows DISTINCT by volume」的含義。樣本數據和期望的結果將有所幫助。 –
@Adrian是'SELECT MIN(id),Width * Height * [Length] AS Volume FROM PackageMaterialDimensions GROUP BY Width * Height * [Length]'insufficient? –