から計算された列を持つビューを作成する私はこのコードを使用して作成したTaxLots
呼ば:TSQL:私はテーブルを持つ2つの別個のテーブル
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
私は、すべての関連データとの両方のテーブルを埋め、私は今Taxlots
テーブルと追加の列呼び出しからすべての列を持っているTaxLotsHistory
というビューを作成したいです最終的な営業日がBusinessDates
テーブルからDateCreated
の前に引っ張られるReportDate
たとえば、の日付が2016-08-15
の場合、ReportDate
は2016-08-12
である必要があります。論理的には、
ReportDate = Max(BusinessDate)
where BusinessDate < DateCreated
が、BusinessDate
とDateCreated
を与えられた2つの別々のテーブルに、私は構文を考え出すのトラブルを抱えているされています。私はこの線に沿って何かを持っていたが、それは動作していない:私は現在、
けどI 'AS' キーワードの近くに
不正な構文エラーを取得しています
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
コードに間違ったことがあるのは確かです。ありがとう。 `ポートフォリオFROM:あなたが最も内側の` SELECT`でテーブルのために** 2つのエイリアスを定義しているよう
が見えます。 BusinessDates D As ReportDate' - エイリアスに 'D'だけを使用するか、' AS ReportDate'を使用します - 両方ではありません..... –