gpt4 book ai didi

mysql - 尝试在 select 语句中使用特定范围,但在外部连接中全部包含

转载 作者:行者123 更新时间:2023-11-29 03:34:17 24 4
gpt4 key购买 nike

我正在尝试创建一个表格,该表格将显示给定年份的年销售额,但将当年没有销售额的所有帐户返回为 0 美元。我不想通过 WHERE 子句进行过滤,因为我想要所有帐户的完整左连接。当我不指定日期范围时,我可以获得所有帐户的总销售额,而没有销售额为空。

我浏览了所有问题,但似乎找不到答案。

SELECT
DA.Account_Name,
sum(fs.total_sales) as total_annual_sales
FROM
Dim_Account as da
left outer join
Fact_Sales as fs
on da.account_key=fs.account_key

WHERE fs.date_key >=20100101 AND fs.date_key<=20101231

GROUP BY
da.account_key
ORDER BY
da.account_name

结果看起来像

Account Name     Total_Annual_Sales
Bob's Furniture 100,000
Mary's Emporium 17,000
Joe's Warehouse 150,000

但是,如果我“不包括日期,我会得到所有销售额的总和”

Account Name     Total_Annual_Sales
Bob's Furniture 451,000
Gene's Garage 5,000
Mary's Emporium 34,000
Frank's Furnishing NULL
Joe's Warehouse 250,700
Harry's House NULL

我想看到的是 2010 年的销售额

Account Name    Total_Annual_Sales
Bob's Furniture 100,000
Gene's Garage 0
Mary's Emporium 17,000
Frank's Furnishing 0
Joe's Warehouse 150,000
Harry's House 0

最佳答案

尝试在加入表格的日期添加过滤器。如果它是左联接,它应该在那里有空值......然后合并总和以显示 0 如果它是空的......如果不是'不工作请发布一个带有一些示例数据的 sqlfiddle,这样我就可以让它工作。应该是一个简单的修复。

示例查询:

SELECT
DA.Account_Name,
IF (SUM(fs.total_sales)> 0, SUM(fs.total_sales), 0) as total_annual_sales
FROM Dim_Account as da
LEFT JOIN Fact_Sales as fs
ON da.account_key=fs.account_key
AND (fs.date_key >=20100101 AND fs.date_key<=20101231)
GROUP BY da.account_key
ORDER BY da.account_name

关于mysql - 尝试在 select 语句中使用特定范围,但在外部连接中全部包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25275047/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com