这是数据详情
ID NAME STRVALUE INTVALUE
1 d_n d1 (null)
2 d_n d1 (null)
3 d_n d1 (null)
3 u_n u1 (null)
3 s_l 4 4
3 p_n A (null)
4 d_n d2 (null)
5 d_n d2 (null)
6 d_n d2 (null)
6 u_n u2 (null)
6 s_l 5 5
6 p_n A (null)
7 d_n d1 (null)
8 d_n d1 (null)
9 d_n d1 (null)
9 u_n u1 (null)
9 s_l 5 5
9 p_n A (null)
10 d_n d1 (null)
在我的数据中,对于每个ID,我有多行。每一行都有name,strvalue和intvalue。
有人可以帮助我以下列格式获取输出吗?
STRVALUE INTVALUE_SUM
d1 9
d2 5
查询
SELECT
strvalue,
SUM(intvalue) AS `Sum`
FROM
d
WHERE id IN
(SELECT
id
FROM
e
WHERE TYPE = 'a_e'
AND USER = 1)
GROUP BY id
答案 0 :(得分:0)
创建测试数据:
DECLARE @Test TABLE
(
ID INT,
NAME VARCHAR(10),
STRVALUE VARCHAR(10),
INTVALUE INT NULL
)
INSERT INTO @Test
(ID, NAME, STRVALUE, INTVALUE)
VALUES
(1, 'd_n', 'd1', NULL),
(2, 'd_n', 'd1', null),
(3, 'd_n', 'd1', null),
(3, 'u_n', 'u1', null),
(3, 's_l', '4', 4),
(3, 'p_n', 'A', null),
(4, 'd_n', 'd2', null),
(5, 'd_n', 'd2', null),
(6, 'd_n', 'd2', null),
(6, 'u_n', 'u2', null),
(6, 's_l', '5', 5),
(6, 'p_n', 'A', null),
(7, 'd_n', 'd1', null),
(8, 'd_n', 'd1', null),
(9, 'd_n', 'd1', null),
(9, 'u_n', 'u1', null),
(9, 's_l', '5', 5),
(9, 'p_n', 'A', null),
(10, 'd_n', 'd1', null);
从您期望的答案中,我猜您正在寻找与d_n匹配的s_l行并尝试获取这些值,这是查询。
SELECT d1.STRVALUE, SUM(d2.INTVALUE) AS INTVALUE_SUM FROM @Test d1
INNER JOIN @Test d2
ON d1.ID = d2.ID
AND d1.NAME = 'd_n'
AND d2.NAME = 's_l'
GROUP BY D1.STRVALUE
这是输出:
STRVALUE INTVALUE_SUM
d1 9
d2 5
现在只需修复查询,根据您发布的其他子查询提取正确的ID,就可以获得计数。