2017-09-07 214 views
0

我有一個表,讓我仰望的日期,然後檢索財政期間,每週它屬於什麼等等加入今天的日期

此表的格式如下:

日期(DATETIME)

FinancialPd

FinancialWk

FinancialYr

我希望能夠做的是採取今天的日期,並找出它屬於報告自動化的財務期。

到目前爲止,我曾嘗試:

SELECT 
SUM(Revenue) as revenue, 
periods.Date, 
periods.financialPd 

FROM 

[tbl].[dbo].[view] ordTbl 

INNER JOIN [tbl].[dbo].[caltbl] as periods 
ON GETDATE() = periods.Date 

我預期的結果會是這樣的:

今天是:2017年1月15日00:00:00

財務期:1

收入:1582.08

編輯**

TDLR;我需要取得今日日期,在我的日曆表中查找,並返回適當的財務期。

+2

你很困惑加入在哪裏。使用日期列適當的日曆表加入您的視圖。如果你只想要今天的訂單,添加一個WHERE子句來過濾視圖或日曆表 –

+0

@PanagiotisKanavos不,這不是關於訂單,這是關於計算今天日期屬於哪個財務週期。 – 80gm2

+1

那你爲什麼把那個觀點放在那裏?你爲什麼使用JOIN?只需使用日曆表上的WHERE即可。 –

回答

3

根據Panagiotis Kanavos評論,您應該使用WHERE子句。

好像你想要的日期(datetime值)轉換爲date值,試試這個:

SELECT periods.Date, periods.financialPd 
FROM [tbl].[dbo].[view] ordTbl 
INNER JOIN [tbl].[dbo].[caltbl] as periods 
ON periods.[YourJoinField] = ordTbl.[YourJoinField] 
WHERE CAST(GETDATE() AS DATE = CAST(periods.Date AS DATE) 

你可能不需要第二投,取決於periods.Date的數據類型。

不確定這是否是查詢的簡化版本,但您不會從ordTbl中選擇任何內容,以便根本不需要連接。

如果你不需要的訂單表,那麼你只是想這樣的事情:

SELECT periods.Date, periods.financialPd 
FROM [tbl].[dbo].[caltbl] as periods 
WHERE CAST(GETDATE() AS DATE = CAST(periods.Date AS DATE) 

的原因CASTGETDATE()將返回一個datetime值,所以:

SELECT GETDATE() 

返回:2017-09-07 15:49:54.233它永遠不會等於:2017-09-07,因爲它將默認爲:2017-09-07 00:00:00.000

+1

不需要投射日曆表的日期。它*應該是沒有時間部分的日期或日期時間 –

+0

我的[YourJoinField]是當前日期的GetDate()。 – 80gm2

+1

@PanagiotisKanavos我不確定,因此該行:_You可能不需要第二次演員,具體取決於期間的數據類型。日期._ – Tanner