[英]How to get no. of days between 2 dates?
我是初學者學習SQL。 我的代碼可能很粗糙。 我有2張桌子。 試圖得到沒有。 自交易表中每一行開設帳戶以來的天數。 我使用的代碼不斷給我一個錯誤。
表1: Orders
Customer_Id TxnDate Amount
-------------------------------
4001 21-Aug-18 245.99
4002 30-Jan-18 49.99
4003 15-Apr-17 204.87
4001 18-Dec-18 130.88
4004 15-May-17 198.33
4006 4-Feb-17 783.65
表2: Customers
Customer_Id AcctOpenDate CustomerFirstName CustomerLastName
--------------------------------------------------------------
4001 7-Jan-16 John Doe
4002 15-Apr-15 Ashley Smith
4003 14-May-14 Carter Jones
4004 17-Sep-16 Ika Gaut
4005 18-Aug-14 Gray Show
4006 25-Oct-15 Kathia Kim
查詢:
SELECT c.Customer_Id, c.AcctOpenDate, c.CustomerFirstName, c.CustomerLastName
FROM dbo.Customers
LEFT OUTER JOIN Orders ON Orders.Customer_Id = Customers.Customer_Id;
SELECT DATEDIFF (d, "AcctOpenDate", "TxnDate") AS Dayssinceacctopen
FROM dbo.Orders;
當前產生的錯誤:
消息208,第16級,狀態1,第26行
無效的對象名稱“ dbo.Customers”
要返回這兩個日期之間的差,可以使用以下查詢:
SELECT c.Customer_Id, c.AcctOpenDate, c.CustomerFirstName, c.CustomerLastName,
DATEDIFF(day, c.AcctOpenDate, o.TxnDate) AS DaysSinceAcctOpen
FROM Customers c
LEFT OUTER JOIN Orders o ON o.Customer_Id = c.Customer_Id;
我為客戶表設置了別名,因為您在結果字段名稱上使用了“ c”別名。
此查詢是否還會引發無效對象名稱客戶的相同錯誤?
正如評論中確認的那樣,您需要在表訂單上附加一個名為Dayssinceacctopen的附加列,我認為您可以在表訂單和客戶之間使用INNER JOIN來獲得所需的結果集,如下所示:
SELECT
C.Customer_Id,
C.AcctOpenDate,
C.CustomerFirstName,
C.CustomerLastName,
O.TxnDate,
O.Amount,
DATEDIFF(DD,C.AcctOpenDate,O.TxnDate) Dayssinceacctopen
FROM Orders O
INNER JOIN Customers C ON O.Customer_Id = C.Customer_Id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.