簡體   English   中英

如何獲得否。 2個日期之間的天數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM