【问题标题】:Pivot in SQL for negative values在 SQL 中透视负值
【发布时间】:2016-03-23 23:50:08
【问题描述】:
 CREATE TABLE [dbo].(test)
            [cid] [varchar](50) NULL,
            [mid] [varchar](50) NULL,
            [val] [varchar](50) NULL
  ) ON [PRIMARY]

表结构(select * form test)

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

谁能帮忙?

【问题讨论】:

    标签: sql sql-server tsql pivot


    【解决方案1】:

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

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

    应该是mid; val 不采用这些值。

    【讨论】:

    • 你能告诉我如何在 DB2 中做到这一点
    • 这是一个不同的问题,应该作为问题提出,而不是评论。我想知道为什么这被否决了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 2017-01-23
    • 1970-01-01
    相关资源
    最近更新 更多