У меня есть таблица с именем TaxLots
, который я создал с помощью этого кода:TSQL: Создание представления с вычисляемым столбцом из двух отдельных таблиц
CREATE TABLE Portfolio.TaxLots
(
Ticker varchar(22) NOT NULL,
SecurityDescription varchar(50) NOT NULL,
Class varchar(15) NULL,
Ccy varchar(5) NULL,
LSPosition char(3) NULL,
Date date NULL,
Quantity int NULL,
LocAvgCost decimal(8,3) NULL,
LocTaxCostBasis int NULL,
LocMktVal int NULL,
BaseAvgCost decimal(8,3) NULL,
BaseTaxCostBasis int NULL,
BaseMktVal int NULL,
BaseUNRL int NULL,
DateCreated DATE NOT NULL DEFAULT Cast(GetDate() as Date)
)
GO
Затем я создал вторую таблицу с именем BusinessDates
, что я создал, используя следующий код:
CREATE TABLE Portfolio.BusinessDates
(
Date date NOT NULL,
)
GO
Я заселены обе таблицы со всеми соответствующими данными, и теперь я хочу, чтобы создать представление под названием TaxLotsHistory
, который имеет все столбцы из таблицы Taxlots
и дополнительного вызова столбца ed ReportDate
, который вытаскивает последнюю деловую дату из таблицы BusinessDates
до DateCreated
.
Например: если DateCreated
- 2016-08-15
, то ReportDate
должен быть 2016-08-12
. Логически
ReportDate = Max(BusinessDate)
where BusinessDate < DateCreated
но учитывая BusinessDate
и DateCreated
находятся в двух отдельных таблицах, у меня возникают проблемы, выяснить синтаксис. У меня было что-то вдоль линий этого, но он не работает:
CREATE VIEW Portfolio.TaxLotsHistory
AS
SELECT
Ticker, SecurityDescription, Class, Ccy, LSPosition, Date, Quantity,
LocAvgCost, LocTaxCostBasis, LocMktVal, BaseAvgCost, BaseTaxCostBasis,
BaseMktVal, BaseUNRL, DateCreated,
(SELECT MAX(BusinessDate)
FROM Portfolio.BusinessDates D As ReportDate
WHERE D.BusinessDate) < T.DateCreated
FROM
Portfolio.TaxLots T
В настоящее время я получаю сообщение об ошибке Неверный синтаксис
около ключевого слова «AS»
но я «Конечно, в коде есть другие вещи. Благодарю.
Похоже, вы определяете ** два псевдонима ** за столом во внутреннем большинстве 'SELECT':' FROM портфолио. BusinessDates D As ReportDate' - либо используйте только 'D' для псевдонима, либо используйте' AS ReportDate', но не оба ..... –