从表中获取值为零的列名

时间:2015-02-03 12:22:26

标签: mysql

我有一个查询,可以从说出DefaultersTable

返回这些数据
Select CustomerID, RoleID FROM DefaultersTable Where DefaulterValue = 1

CustomerID, RoleID
  10034        34
  15481        37

现在我有了另一张桌子" DefaultersDetails"它们具有单独的月度值,

所以我做了

Select * from DefaultersDetails Where CustomerID = 10034 AND RoleID = 34.

获取数据

CustomerID, RoleID, ValueForJan, ValueForFeb, ValueforMar
  10034         34        45          0           32

请注意,我在第一种情况下获得此条目只是因为其中一个值为0。

现在如何在单个查询中获取两个数据,我想要这样的东西

CustomerID, RoleID, ZeroValueForMonth 
  10034        34       ValueForFeb
  15481        37       ValueForJan

我想这可以通过temprory Tables完成,但我不知道该怎么做

1 个答案:

答案 0 :(得分:0)

您可以使用COALESCE功能。试试这个:

SELECT d.CustomerID, d.RoleID, 
COALESCE(detail.JAN,detail.FEB,detail.MAR) AS ZeroValueForMonth
FROM DefaultersTable d
INNER JOIN
(
SELECT CustomerID, RoleID,
    (CASE WHEN ValueForJan <> 0 THEN NULL ELSE 'ValueForJan' END) JAN,
    (CASE WHEN ValueForFeb <> 0 THEN NULL ELSE 'ValueForFeb' END) FEB,
    (CASE WHEN ValueForMar <> 0 THEN NULL ELSE 'ValueForMar' END) MAR
FROM Defaultersdetail
) AS detail
ON detail.CustomerID = d.CustomerID AND detail.RoleID = d.RoleId
where d.DefaulterValue = 1

您可以在子查询中添加像MAY,JUN等其他月份,如下所示:

(CASE WHEN ValueForApr <> 0 THEN NULL ELSE 'ValueForApr' END) APR