我有一个查询,可以从说出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完成,但我不知道该怎么做
答案 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