[英]SQL Server : concatenation and sum totals from tables
这是我的第一个存储过程,不确定我在做什么。 也许你可以教我一些东西。
我正在尝试创建一个名为SPGET_CUSTOMER_BILL
的过程,并且应该调出连接在一起的客户的名字和姓氏以及来自2个不同表的数字总和,这将是他们的总账单。
我有以下四个表:
SALON_CUSTOMER
:CUST_ID,STY_ID,LAST_NAME,FIRST_NAME APPOINTMENT
:APPT_TIME,CUST_ID,STY_ID,SERVICE_ID,PROD_NUM PRODUCT
:PROD_NUM,PROD_TYPE,PROD_NAME,PROD_VENDOR,PRICE SERVICE_
:SERVICE_ID,SERVICE_DESC,EST_TIME,PRICE 我需要做的是总和的PRICE
从PRODUCT
表和PRICE
从SERVICE_
表中的每个预约/客户和列表,在第一列用自己的名字和姓氏一起串联。
结果如下所示:
CUSTOMER_NAME TOTAL_BILL
-----------------------------
JOHN DOE 45.64
JANE DOE 52.64
我可能还差得很远,但是现在这是我的代码,到现在为止,它已经变得很混乱了,我已经把它弄得太多了。
CREATE PROCEDURE SPGET_CUSTOMER_BILL
AS
SELECT
RTRIM(FIRST_NAME) + ' ' + RTRIM(LAST_NAME) AS CUSTOMER_NAME,
SUM(ISNULL(P.PRICE, 0) = ISNULL(S.PRICE, 0) TOTAL_BILL
FROM
APPOINTMENT A
INNER JOIN
SALON_CUSTOMER ON SALON_CUSTOMER.CUST_ID = A.CUST_ID
INNER JOIN
PRODUCT P ON A.PROD_NUM = P.PROD_NUM
INNER JOIN
SERVICE_ S ON S.SERVICE_ID = A.SERVICE_ID;
如果我将它们分开,它们可以正常工作。 我只是不能让他们一起工作。 如果您能教我一些我做错的事情,将不胜感激。 谢谢。
在不了解您的数据的情况下(假设您的逻辑和联接正确),您似乎只需要按计算出的客户名称分组即可获得总计。 这将返回所有客户-您可能要向PROC添加CustomerId
参数,然后向其添加WHERE过滤器?
CREATE PROCEDURE dbo.SPGET_CUSTOMER_BILL
AS
SELECT RTRIM(FIRST_NAME) + ' ' + RTRIM(LAST_NAME) AS CUSTOMER_NAME,
SUM(ISNULL(P.PRICE, 0)) TOTAL_BILL
FROM APPOINTMENT A
INNER JOIN SALON_CUSTOMER ON SALON_CUSTOMER.CUST_ID = A.CUST_ID
INNER JOIN PRODUCT P ON A.PROD_NUM = P.PROD_NUM
INNER JOIN SERVICE_ S ON S.SERVICE_ID = A.SERVICE_ID
-- WHERE?
GROUP BY RTRIM(FIRST_NAME) + ' ' + RTRIM(LAST_NAME);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.