我有这张桌子:
Name Value Sequence
-------------------------------
test A1 1
test A2 3
test2 A20 5
test2 A10 8
Run Code Online (Sandbox Code Playgroud)
我在对名称进行分组并获得 Value+ 和 Value- 之后,如下所示:
Name Value+ Value-
-----------------------------------
test A1 A2
test2 A20 A10
Run Code Online (Sandbox Code Playgroud)
规则是:
我该怎么做?
这是带有交叉表的解决方案:
DECLARE @SampleData TABLE (
Name varchar(50),
Value varchar(50),
Sequence int
)
INSERT INTO @SampleData
VALUES
('test' ,'A1', 1)
,('test' ,'A2', 3)
,('test2' ,'A20', 5)
,('test2' ,'A10', 8);
WITH RankedData AS (
SELECT *, RN = ROW_NUMBER() OVER(PARTITION BY Name ORDER BY Sequence)
FROM @SampleData
)
SELECT Name,
[Value+] = MAX(CASE WHEN RN = 1 THEN Value ELSE '' END),
[Value-] = MAX(CASE WHEN RN = 2 THEN Value ELSE '' END)
FROM RankedData
GROUP BY Name
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
19687 次 |
最近记录: |