T-SQL条件SUM操作

1 sql sql-server

我正在寻找一种干净,简洁的方式来有条件地执行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操作的最佳方法?

Mat*_*eld 5

您可以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)