我會鼓勵你去看看你的表的設計。我在這裏給出一個例子,使用表變量而不是表(這樣就可以在查詢窗口中運行它):
declare @pets table
(
Pet varchar(10),
SaleNumber int,
SaleDate date
)
INSERT INTO @pets VALUES
('Dogs', 12, '2017-08-07'),
('Dogs', 11, '2017-08-08'),
('Dogs', 8, '2017-08-09'),
('Dogs', 3, '2017-08-10'),
('Dogs', 0, '2017-08-11'),
('Cats', 16, '2017-08-07'),
('Cats', 13, '2017-08-08'),
('Cats', 5, '2017-08-09'),
('Cats', 8, '2017-08-10'),
('Cats', 4, '2017-08-11'),
('Fish', 45, '2017-08-07'),
('Fish', 27, '2017-08-08'),
('Fish', 20, '2017-08-09'),
('Fish', 35, '2017-08-10'),
('Fish', 22, '2017-08-11'),
('Birds', 3, '2017-08-07'),
('Birds', 3, '2017-08-08'),
('Birds', 3, '2017-08-09'),
('Birds', 3, '2017-08-10'),
('Birds', 2, '2017-08-11')
declare @lastdate date = (SELECT max(saledate) as lastdate FROM @pets)
declare @lastsum float = (SELECT sum(salenumber) as petsum FROM @pets
WHERE saledate = @lastdate)
SELECT Pet, SaleNumber, Datename(dw,saledate) AS [Day of Week],
salenumber/@lastsum as [Percentage of Day's Sales]
FROM @pets WHERE saledate = @lastdate
結果看起來是這樣的:
Pet SaleNumber Day of Week Percentage of Day's Sales
Dogs 0 Friday 0
Cats 4 Friday 0.142857142857143
Fish 22 Friday 0.785714285714286
Birds 2 Friday 0.0714285714285714
佈置您的這樣的表格,意味着您可以每天簡單地添加記錄,而不必更改表格,而上述查詢將自動獲取最後幾天的值。
什麼版本的SQL服務器 – scsimon
我會說PIVOT可以工作,但只有你的表星期一 - 星期天,然後重新開始?或者它是如何工作的? –
對於鳥類,你確定這是正確的百分比嗎? – scsimon