我正在嘗試在存儲過程中執行一個很好的SQL語句。對結果集執行計數(*)
我看了看兩天之間發生事件的天數問題。 我的例子是銷售訂單:對於這個月,我們有多少天有銷售訂單?
假設這個設置:
CREATE TABLE `sandbox`.`orders` (
`year` int,
`month` int,
`day` int,
`desc` varchar(255)
)
INSERT INTO orders (year, month, day, desc)
VALUES (2009,1,1, 'New Years Resolution 1')
,(2009,1,1, 'Promise lose weight')
,(2009,1,2, 'Bagel')
,(2009,1,12, 'Coffee to go')
對於這種在數據結果應該是3,因爲已經三天銷售。 我找到的最佳解決方案如下。
但是,製作一張臨時表格,然後將其刪除,然後將其刪除。它在一個聲明中「應該」是可能的。
任何人誰得到了「更好」的解決方案,然後我?
/L
SELECT [Year], [Month], [Day]
INTO #Some_Days
FROM Quarter
WHERE Start >= '2009-01-01' AND [End] < '2009-01-16'
GROUP BY [Year], [Month], [Day]
SELECT count(*) from #Some_Days
那(年,月)是如何工作的?我從來沒有見過。 – 2009-01-17 00:01:06
它應該相當於:(year = 2009 AND month = 1)。但我永遠不會記得哪些RDBMS品牌支持它,哪些不支持。有些不能很好地優化它。可能最好避免。 – 2009-01-17 00:03:00