我试图基于同一表中的ProductID在新列中获取“现金”,“支票”和“信用卡”总计。
表-付款
+-----------+------------+---------------+--------+
| ProductID | SaleDate | PaymentMethod | Amount |
+-----------+------------+---------------+--------+
| 3 | 2012-02-10 | Cash | 10 |
| 3 | 2012-02-10 | Cash | 10 |
| 3 | 2012-02-10 | Check | 15 |
| 3 | 2012-02-10 | Credit Card | 25 |
| 4 | 2012-02-10 | Cash | 5 |
| 4 | 2012-02-10 | Check | 6 |
| 4 | 2012-02-10 | Credit Card | 7 |
+-----------+------------+---------------+--------+
期望的输出-
+------------+------+-------+-------------+-------+
| ProductID | Cash | Check | Credit Card | Total |
+------------+------+-------+-------------+-------+
| 3 | 20 | 15 | 25 | 60 |
| 4 | 5 | 6 | 7 | 18 |
+------------+------+-------+-------------+-------+
我尝试过左联接同一张桌子,但没有成功。任何建议,将不胜感激。谢谢。
不成功和不完整的尝试-
SELECT P.ProductID, Sum( PCash.Amount ) AS 'Cash', SUM( PCheck.Amount ) AS 'Check', SUM( PCredit.Amount) AS 'Credit Card'
FROM Payments AS P
LEFT JOIN Payments AS PCash ON P.ProductID = PCash.ProductID AND PCash.PaymentMethod = 'Cash'
LEFT JOIN Payments AS PCheck ON P.ProductID = PCheck.ProductID AND PCheck.PaymentMethod = 'Check'
LEFT JOIN Payments AS PCredit ON P.ProductID = PCredit.ProductID AND PCredit.PaymentMethod = 'Credit'
WHERE P.SaleDate = '2012-02-10' GROUP BY ProductID;
我认为您正在使此过程变得比需要的复杂。
SELECT
ProductID,
SUM(IF(PaymentMethod = 'Cash', Amount, 0)) AS 'Cash',
-- snip
SUM(Amount) AS Total
FROM
Payments
WHERE
SaleDate = '2012-02-10'
GROUP BY
ProductID
我使用嵌套的Select语句从表1中获得单行结果,我需要在同一行的末尾追加表3中的另一列(COLX)。我试过联合,但结果是两行。有什么建议吗? table2.colz和table3.colx是用来匹配条目的ID。这两个最终结果都符合要求。 编辑(进一步解释我的表结构) COLX是表3的ID,以匹配表2中的COLZ 表2 ID中的COL1与表1中的COL1匹配 结果我需要的是表1.col1,表1.c
问题内容: 我想比较同一张表中的两列。我希望能够返回两列具有相同值的所有行。 我正在寻找类似的东西。 因此,在下面的示例中,我将仅返回第一行: 如果有关系,我正在使用(更具体地讲)。 问题答案: 应该管用。不是吗 如果不是,它们是否具有相同的数据类型和长度?您可能需要转换。 我不了解WebSql,但是我看到一些数据库系统拒绝匹配,即使其中一个是varchar(5)而另一个是varchar(10),
如何根据列上的0到max(int)值自动递增列。 假设,我希望增量从$0开始。我必须为此代码编辑什么? 进入
问题内容: 我有一张叫的桌子。 它包含名为和的字段。现在,我想从表中删除所有包含表中已经包含的名字和姓氏的记录。 我使用mysql数据库,并且是表中的主键。 问题答案: 删除之后,将删除所有重复项,并为您提供最新的CustomerID 虽然有警告提示。我不知道您的用例,但是完全可以让两个人使用完全相同的名字(我们甚至一次都具有相同的地址)。
问题内容: 我需要将一个列的数据插入同一表中的另一列。 有人可以告诉我该怎么写吗? 谢谢 问题答案:
假设我们有: 我们有一个实例列表,即