水平列出mysql行值而不进行透视

时间:2015-02-16 10:03:55

标签: mysql sql stored-procedures pivot

在我的表中,我有以下列

--loannumber--disbid--username--docs--
--------------------------------------
---1234567  -- 430  -- jhon   -- NCN --
-- same   ---- 425  -- sam    -- NPC --
-- same     -- 455  -- clin   -- Mis --
-- 4567891  -- 666  -- some1  -- NCN --
-- same     -- 777  -- some2  -- NPC --

我还有一个自动递增的主键

我想要做的就是像这样过滤它并在datagridview中显示

++ loannumber ++  NCN  ++  NPC  ++  MIS  ++
--   1234567  ++  430  ++  --   ++  --   ++
--    same    ++  --   ++  425  ++  --   ++
--    same    ++  --   ++  --   ++  455  ++

我尝试使用以下sql

SELECT loannumber, 

      CASE WHEN docs='NCN'THEN 1 ELSE 0 END 'NCN',      
      CASE WHEN docs='NPC'THEN 1 ELSE 0 END 'NPC',
      CASE WHEN docs='Missing'THEN 1 ELSE 0 END 'Missing'

FROM claimloans 

但这只计算了一些人的数量。我想展示他们而不是数数。贷款领域不是强制性的。我打算写一个sproc并将其称为winforms。有人请帮帮我吗?

  ++ NCN  ++  NPC   ++  MIS ++
  ++  430  ++  --   ++  --   ++
  ++  --   ++  425  ++  --   ++
  ++  --   ++  --   ++  455  ++

(这也没问题!)

这工作得非常好。但是如何消除null

SELECT loannumber, 

      CASE WHEN docs='NCN'THEN disblid END 'NCN',
      CASE WHEN docs='Missing'THEN disblid END 'Missing',
      CASE WHEN docs='NF'THEN disblid END 'NF'


FROM claimloans 

1 个答案:

答案 0 :(得分:0)

我不确定我是否正确理解你,但试试这个:

SELECT loannumber, 
      SUM(CASE WHEN docs='NCN'THEN 1 ELSE 0 END) 'NCN',
      SUM(CASE WHEN docs='Missing'THEN 1 ELSE 0 END) 'Missing',
      SUM(CASE WHEN docs='NF'THEN 1 ELSE 0 END) 'NF'
FROM claimloans 
GROUP BY loannumber