将数据从多行移动到 SQL 服务器中的单行
Move data from multiple rows to a single row in SQL Server
我有一个 table 如下所示-
F1 F2 F3 F4
A AB NA NA
A NA BC NA
A NA NA CD
B UV NA NA
B NA WX NA
B NA NA YZ
C ABC NA NA
C NA BCD NA
C NA NA XYZ
我需要按 F1 列分组并为不等于 'NA' 的连续列选择值。
F1 F2 F3 F4
A AB BC CD
B UV WX YZ
C ABC BCD XYZ
我正在使用以下代码,但它无法正常工作。
SELECT F1
,MAX(ISNULL(F2 ,'')) as F2
,MAX(ISNULL(F3 ,'')) as F3
,MAX(ISNULL(F4 ,'')) as F4
FROM test
group by F1;
请帮忙。
试试这个:
SELECT F1
,MAX(ISNULL(NULLIF(F2, 'NA') ,'')) as F2
,MAX(ISNULL(NULLIF(F3, 'NA') ,'')) as F3
,MAX(ISNULL(NULLIF(F4, 'NA') ,'')) as F4
FROM test
group by F1;
请注意,如果第一个参数的值与第二个参数的值相同,则 NULLIF 将 return NULL。
SELECT F1,
MAX(CASE WHEN F2 = 'NA' THEN '' ELSE F2 END) AS F2
MAX(CASE WHEN F3 = 'NA' THEN '' ELSE F3 END) AS F2
MAX(CASE WHEN F4 = 'NA' THEN '' ELSE F4 END) AS F2
从测试
按 F1 分组;
我有一个 table 如下所示-
F1 F2 F3 F4
A AB NA NA
A NA BC NA
A NA NA CD
B UV NA NA
B NA WX NA
B NA NA YZ
C ABC NA NA
C NA BCD NA
C NA NA XYZ
我需要按 F1 列分组并为不等于 'NA' 的连续列选择值。
F1 F2 F3 F4
A AB BC CD
B UV WX YZ
C ABC BCD XYZ
我正在使用以下代码,但它无法正常工作。
SELECT F1
,MAX(ISNULL(F2 ,'')) as F2
,MAX(ISNULL(F3 ,'')) as F3
,MAX(ISNULL(F4 ,'')) as F4
FROM test
group by F1;
请帮忙。
试试这个:
SELECT F1
,MAX(ISNULL(NULLIF(F2, 'NA') ,'')) as F2
,MAX(ISNULL(NULLIF(F3, 'NA') ,'')) as F3
,MAX(ISNULL(NULLIF(F4, 'NA') ,'')) as F4
FROM test
group by F1;
请注意,如果第一个参数的值与第二个参数的值相同,则 NULLIF 将 return NULL。
SELECT F1, MAX(CASE WHEN F2 = 'NA' THEN '' ELSE F2 END) AS F2 MAX(CASE WHEN F3 = 'NA' THEN '' ELSE F3 END) AS F2 MAX(CASE WHEN F4 = 'NA' THEN '' ELSE F4 END) AS F2 从测试 按 F1 分组;