我对SQL很陌生 - 希望你能提供帮助:
我有几个表共有3列:ObjNo
,Date(year-month)
,Product
。
每个表格都有另外一列,代表经济价值(sales
,count
,netsales
,plan
..)
我需要加入3个常用列的所有表格。对于3个公共列的每个现有组合,结果必须有一行。并非每个表都存在每种组合。
如果我执行完全外连接,我会为每个表获得ObjNo
,Date
等,但只需要一次。
我怎样才能做到这一点?
+--------------+-------+--------+---------+-----------+
| tblCount | | | | |
+--------------+-------+--------+---------+-----------+
| | ObjNo | Date | Product | count |
| | 1 | 201601 | Snacks | 22 |
| | 2 | 201602 | Coffee | 23 |
| | 4 | 201605 | Tea | 30 |
| | | | | |
| tblSalesPlan | | | | |
| | ObjNo | Date | Product | salesplan |
| | 1 | 201601 | Beer | 2000 |
| | 2 | 201602 | Sancks | 2000 |
| | 5 | 201605 | Tea | 2000 |
| | | | | |
| | | | | |
| tblSales | | | | |
| | ObjNo | Date | Product | Sales |
| | 1 | 201601 | Beer | 1000 |
| | 2 | 201602 | Coffee | 2000 |
| | 3 | 201603 | Tea | 3000 |
+--------------+-------+--------+---------+-----------+
THX 德文
答案 0 :(得分:0)
听起来你正在使用COALESCE
,它会为你提供每张桌子的每一个字段。您可能只想从一个表中获取值,因此您应该明确要在结果中包含哪些字段。
如果您不确定哪个表格会为每个案例创建一个记录(即不能保证在任何特定表格中都有记录),您可以使用SELECT COALESCE(tbl1.ObjNo, tbl2.ObjNo, tbl3.ObjNo) AS ObjNo, ....
tbl1.Sales, tbl2.Count, tbl3.Netsales
函数来获取在每种情况下都是第一个非空值。
Attrition_edufield <- myds %>%
select(Attrition, EducationField) %>%
group_by(Attrition, EducationField) %>%
summarize(count = n())