我正在寻找一种干净,简洁的方式来有条件地执行SUM操作.我知道这要相当直接,但我不确定如何继续.为了表明我的意思,看一看......
DECLARE @Test TABLE
(
LevelID int,
DataFieldID INT,
RangeID INT,
Value FLOAT
)
INSERT INTO @Test VALUES (22, 6, 117, 100)
INSERT INTO @Test VALUES (22, 6, 122, 100)
INSERT INTO @Test VALUES (22, 6, 126, 100)
INSERT INTO @Test VALUES (22, 7, 117, 100)
INSERT INTO @Test VALUES (22, 7, 122, 100)
INSERT INTO @Test VALUES (22, 7, 126, 100)
INSERT INTO @Test VALUES (23, 6, 117, 100)
INSERT INTO @Test VALUES (23, 6, 122, 100)
INSERT INTO @Test VALUES (23, 6, 126, 100)
INSERT INTO @Test VALUES (23, 7, 117, 100)
INSERT INTO @Test VALUES (23, 7, 122, 100)
INSERT INTO @Test VALUES (23, 7, 126, 100)
SELECT
LevelID,
RangeID,
SUM(Value[where DataFieldID = 6]) / SUM(Value[where DataFieldID = 7])
FROM
@Test
GROUP BY LevelID, RangeID
Run Code Online (Sandbox Code Playgroud)
知道什么是实现上述SUM操作的最佳方法?
您可以CASE WHEN在聚合中使用:
SELECT
LevelID,
RangeID,
SUM(CASE WHEN DataFieldID = 6 THEN Value ELSE 0 END) /
SUM(CASE WHEN DataFieldID = 7 THEN Value ELSE 0 END)
FROM
@Test
GROUP BY LevelID, RangeID
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
117 次 |
| 最近记录: |