
如上图数据:
有两组数据,是以LastLoginIP分组的。
想要得到以下结果(结果是一条记录):
字段:LastLoginIP-1 LastLoginIP-2
字段值:40 18
补充说明:这条记录得到的值分别是两组LastLoginIP的LoginTime的和。
------解决思路----------------------
DECLARE @T TABLE(ID INT,LastLoginIP VARCHAR(20),LoginTime INT)
INSERT INTO @T VALUES
(1,'127.0.0.1',10),
(4,'127.0.0.1',30),
(5,'127.0.0.1',0),
(2,'192.168.18.1',12),
(3,'192.168.18.1',6)
;WITH cte AS
(
SELECT CONCAT('LastLoginIP-',DENSE_RANK() OVER(ORDER BY LastLoginIP)) AS RowNo,
LoginTime
FROM @T
)
SELECT * FROM cte
PIVOT
(
SUM(LoginTime) FOR RowNo IN([LastLoginIP-1],[LastLoginIP-2])
) AS PT
------解决思路----------------------
SELECT IFNULL(SUM(CASE WHEN LastLoginIP='127.0.0.1'THEN LoginTime END),0)AS[LastLoginIP-1]
,IFNULL(SUM(CASE WHEN LastLoginIP='192.168.18.1'THEN LoginTime END),0)AS[LastLoginIP-2]
FROM TB