table 中有多个记录时增加列
Increment columns when more than one record in table
我对这类问题很陌生。我试过寻找但找不到任何东西。我还尝试使用每次都递增的 Case 表达式,但这不起作用。
tblHipChop
hop acp ID
20 20 amdb_ma_se_1234
350 30 amdb_ma_se_1234
必须return以下内容:
hop_a hcp_b acp_a acp_b ID
20 350 20 30 amdb_ma_se_1234
DECLARE @tblHipChop TABLE (hop INT, [acp] INT, ID VARCHAR(50))
INSERT INTO @tblHipChop
VALUES (20, 20, 'amdb_ma_se_1234'), (350, 30, 'amdb_ma_se_1234')
SELECT
hop_a = MAX(CASE WHEN t.RowNum = 1 THEN hop END),
hcp_b = MAX(CASE WHEN t.RowNum = 2 THEN hop END),
acp_a = MAX(CASE WHEN t.RowNum = 1 THEN [acp] END),
acp_b = MAX(CASE WHEN t.RowNum = 2 THEN [acp] END),
ID
FROM (
SELECT *, RowNum = ROW_NUMBER() OVER (PARTITION BY ID ORDER BY 1/0)
FROM @tblHipChop
) t
GROUP BY t.ID
输出 -
hop_a hcp_b acp_a acp_b ID
----------- ----------- ----------- ----------- -----------------
20 350 20 30 amdb_ma_se_1234
查看 - ROW_NUMBER
我对这类问题很陌生。我试过寻找但找不到任何东西。我还尝试使用每次都递增的 Case 表达式,但这不起作用。
tblHipChop
hop acp ID
20 20 amdb_ma_se_1234
350 30 amdb_ma_se_1234
必须return以下内容:
hop_a hcp_b acp_a acp_b ID
20 350 20 30 amdb_ma_se_1234
DECLARE @tblHipChop TABLE (hop INT, [acp] INT, ID VARCHAR(50))
INSERT INTO @tblHipChop
VALUES (20, 20, 'amdb_ma_se_1234'), (350, 30, 'amdb_ma_se_1234')
SELECT
hop_a = MAX(CASE WHEN t.RowNum = 1 THEN hop END),
hcp_b = MAX(CASE WHEN t.RowNum = 2 THEN hop END),
acp_a = MAX(CASE WHEN t.RowNum = 1 THEN [acp] END),
acp_b = MAX(CASE WHEN t.RowNum = 2 THEN [acp] END),
ID
FROM (
SELECT *, RowNum = ROW_NUMBER() OVER (PARTITION BY ID ORDER BY 1/0)
FROM @tblHipChop
) t
GROUP BY t.ID
输出 -
hop_a hcp_b acp_a acp_b ID
----------- ----------- ----------- ----------- -----------------
20 350 20 30 amdb_ma_se_1234
查看 - ROW_NUMBER