我試圖去掌握使用函數Partition
生成結果,不幸的是我正在處理別人沒有主鍵的表設計,我不能添加一個「可怕的我知道「SQL Server:分區
我的示例代碼如下
CREATE TABLE mytable (OrderNo varchar(20), TaskNo int, Hours Decimal(2))
insert into mytable values ('GNR68003327','0001',1)
insert into mytable values ('GNR68003327','0002',2)
insert into mytable values ('GNR68003327','0002',2)
insert into mytable values ('GNR68003327','0002',2)
insert into mytable values ('GNR68003327','0003',0)
insert into mytable values ('GNR68003327','0004',0)
insert into mytable values ('GNR68003327','0005',0)
insert into mytable values ('GNR68003327','0006',0)
insert into mytable values ('GNR68003327','0007',4)
insert into mytable values ('GNR68003327','0007',4)
insert into mytable values ('GNR68003327','0007',4)
insert into mytable values ('GNR68003327','0007',4)
我知道我可以只使用一個獨特得到以下的結果,但在這種情況下,我將使用分區的更好,由於這是隻是一個示例我正在嘗試這麼做,還有更多的事情要做。
我想要做的每TaskNo
變化返回Hours
列的第一個值,所以結果應該是
OrderNo TaskNo Hours
GRN68003327 0001 1
GRN68003327 0002 2
GRN68003327 0003 0
GRN68003327 0004 0
GRN68003327 0005 0
GRN68003327 0006 0
GRN68003327 0007 4
我認爲它應該是這個樣子,但我只是不能得到所要求的結果
SELECT
OrderNo, TaskNo,
First_Value(Hours) OVER (PARTITION BY OrderNo ORDER BY TaskNo)
FROM
mytable
如果有人可以幫助它將不勝感激。
感謝菲爾
我假設你正在使用SQL 2012,因爲你使用'First_Value'函數?如果是這樣,那麼SQL 2008標記不適用。 –
嗨Stanley,是的,我使用SQL Server 2012,謝謝P – PJD