以 SQL 为负值的枢轴

Pivot in SQL for negative values

 CREATE TABLE [dbo].(test)
            [cid] [varchar](50) NULL,
            [mid] [varchar](50) NULL,
            [val] [varchar](50) NULL
  ) ON [PRIMARY]

Table 结构(select * 表格测试)

cid     mid val
h0609   c01 -213
h0609   c02 -7
h0609   c03 0
h0702   c01 -4
h0702   c04 -3

我需要这种格式的输出

cid     c01   c02    c03    c04
h0609   -213    -7   0      NULL
h0702   -4    NULL   NULL   -3
h1171   NULL  NULL  -212     -117
h1272   -9    NULL   NULL   NULL
h1273   6     NULL   NULL   NULL

我试过的查询(但它给出空值)

SELECT cid, mid,[c01],[c02],[c03],[c04]
FROM [dbo].[test] 
PIVOT( max(val) 
  FOR val IN ([c01],[c02],[c03],[c04]) ) AS P

我得到了这样的输出

cid     mid c01     c02     c03     c04
h0609   c01 NULL    NULL    NULL    NULL
h0702   c01 NULL    NULL    NULL    NULL
h1272   c01 NULL    NULL    NULL    NULL
h1273   c01 NULL    NULL    NULL    NULL

我需要这种格式的输出

 cid    c01   c02    c03    c04
 h0609  -213    -7   0      NULL
 h0702  -4    NULL   NULL   -3
 h1171  NULL  NULL  -212     -117
 h1272  -9    NULL   NULL   NULL
 h1273  6     NULL   NULL   NULL

有人能帮忙吗?

这与负值无关。问题是 pivot:

SELECT cid, mid,[c01],[c02],[c03],[c04]
FROM [dbo].[test] 
PIVOT( max(val) 
  FOR val IN ([c01],[c02],[c03],[c04]) ) AS P
------^

应该是midval 不采用这些值。