Sql 获取特定的表
我正在使用SQL server 2008,并使用以下函数构建了一个表:Sql 获取特定的表,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我正在使用SQL server 2008,并使用以下函数构建了一个表: SELECT COD1 + COD2 + COD3 AS CODFINAL, SUM(CASE WHEN SIG1 = 'BCO' THEN 1 ELSE 0 END) AS A1, SUM(CASE WHEN SIG1 = 'RIP' THEN 1 ELSE 0 END) AS B1, SUM(CASE WHEN SIG1 = 'MIN'
SELECT COD1 + COD2 + COD3 AS CODFINAL,
SUM(CASE WHEN SIG1 = 'BCO' THEN 1 ELSE 0 END) AS A1,
SUM(CASE WHEN SIG1 = 'RIP' THEN 1 ELSE 0 END) AS B1,
SUM(CASE WHEN SIG1 = 'MIN' THEN 1 ELSE 0 END) AS B1,
SUM(CASE WHEN SIG1 = 'MAD' THEN 1 ELSE 0 END) AS B1,
SUM(CASE WHEN SIG1 = 'CPR' THEN 1 ELSE 0 END) AS PC1,
SUM(CASE WHEN SIG1 = 'MAR' THEN 1 ELSE 0 END) AS B1,
SUM(CASE WHEN SIG1 = 'LAC' THEN 1 ELSE 0 END) AS CLu
FROM DBO.DATABASE
我得到了这样的结果:
CODFINAL A1 B1 B1 B1 PC1 B1 CLu
B12030 1 1 1 1 1 2 3
C12130 1 1 1 1 1 2 3
D12230 1 1 1 1 1 2 3
E12230 1 1 1 1 1 2 3
CODFINAL A1 B1 PC1 CLu
B12030 1 5 1 3
C12130 1 5 1 3
D12230 1 5 1 3
E12230 1 5 1 3
但我希望有一个具有唯一总值的表,如下所示:
CODFINAL A1 B1 B1 B1 PC1 B1 CLu
B12030 1 1 1 1 1 2 3
C12130 1 1 1 1 1 2 3
D12230 1 1 1 1 1 2 3
E12230 1 1 1 1 1 2 3
CODFINAL A1 B1 PC1 CLu
B12030 1 5 1 3
C12130 1 5 1 3
D12230 1 5 1 3
E12230 1 5 1 3
您可以使用:
可能是这样的吗
WITH MyCodes
(
SELECT COD1 + COD2 + COD3 AS CODFINAL,
SUM(CASE WHEN SIG1 = 'BCO' THEN 1 ELSE 0 END) AS A1,
SUM(CASE WHEN SIG1 = 'RIP' THEN 1 ELSE 0 END) AS B1a,
SUM(CASE WHEN SIG1 = 'MIN' THEN 1 ELSE 0 END) AS B1b,
SUM(CASE WHEN SIG1 = 'MAD' THEN 1 ELSE 0 END) AS B1c,
SUM(CASE WHEN SIG1 = 'CPR' THEN 1 ELSE 0 END) AS PC1,
SUM(CASE WHEN SIG1 = 'MAR' THEN 1 ELSE 0 END) AS B1d,
SUM(CASE WHEN SIG1 = 'LAC' THEN 1 ELSE 0 END) AS CLu
FROM DBO.DATABASE
)
SELECT CODFINAL,A1,B1a+B1b+B1c+B1d AS B1, PC1,CLu FROM MyCodes
那么您希望将行连接成单个字符串?为什么有这么多名为
B1
的列?如果您想在case语句中包含多个值,可以将其重写为B1,就像SUM一样(当SIG1在('RIP'、'MIN'、'MAD'、'MAR')中时,则将其重写为B1