以正确的方式加入表格

时间:2016-07-21 15:08:52

标签: sql join

我正在尝试返回一个数据库行上所有帐单详细信息的列表,但我加入表格的方式似乎没有达到预期的效果,我有两个类帐单和米:

bill {billid,customername,town,postcode,dateofissue,totalamount} 米{meterid,billid,metertype,meterread,meterreaddate}

我正在尝试按如下方式进行连接:

SELECT bill as a
inner join meter as b on a.billId = b.billId
where dateOfIssue between '1 jul 2015' and '30 jun 2016'

如果账单有两种不同类型的电表,一种电表类型是白天,一种是夜晚,那么我将获得两行电费。我如何通过设置列来选择一行,以便如果metertype是night,它会出现在名为night的列标题中,如果是day,则会出现在名为day的列标题中

哪种联接类型最适合此目的?

1 个答案:

答案 0 :(得分:4)

使用表别名很好。使用表格的缩写甚至更好。此外,您应该使用标准日期格式。

您的问题的答案是使用条件聚合:

SELECT b.billId,
       SUM(CASE WHEN metertype = 'day' then metterread else 0 end) as reading_day,
       SUM(CASE WHEN metertype = 'night' then metterread else 0 end) as reading_night
FROM bill b JOIN
     meter m
     ON b.billId = m.billId
WHERE b.dateOfIssue between '2015-07-01' and '2016-06-30'
GROUP BY b.billId;