Как получить нет. дней между 2 датами? - PullRequest
0 голосов
/ 26 июня 2019

Я новичок в изучении 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'

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Как подтверждается в комментарии, что вам нужен дополнительный столбец под названием 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
0 голосов
/ 26 июня 2019

Чтобы вернуть разницу между этими двумя датами, вы можете использовать этот запрос:

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» в именах полей результатов.

Вызывает ли этот запрос ту же ошибку с недопустимым именем объекта Customers?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...