在我的SQL-服務器數據庫中有一個表格,其中每天有不同數量的每個時間值(整數形式,例如800 - > 08:00)的條目和一個唯一的ID字段。在單個表格中顯示來自sql while循環的結果
我的表看起來是這樣的:
ID NTIME AMOUNT
8426628 828 531.81
8426629 828 782.61
8426630 829 183.41
8426631 829 183.41
8426632 829 832.41
8426633 829 32.41
8426634 830 374.41
8426635 830 78.41
8426636 830 628.41
因此,我想對於每一個不同的時間值最大的ID來獲得行,像這樣:
ID NTIME AMOUNT
8426629 828 782.61
8426633 829 32.41
8426636 830 628.41
我曾嘗試以下查詢:
DECLARE @t int=815;
WHILE @t<=830
BEGIN
select ID, NTIME, AMOUNT FROM <my_table> WHERE
[email protected] and
ID =
(select max(ID) FROM <my_table> where [email protected]);
Set @t = @t + 1;
END
其中提取正確的結果,但每個選擇查詢結果是d被顯示在不同的表中(結果1-1,結果1-2等)。有沒有辦法在單個結果表中獲得結果,最好不要創建臨時表?
正如迂腐澄清:-),這是一種誤解,認爲CTE需要以分號爲前綴。分號實際上終止了前面的語句(在這個例子中沒有這個語句)。另請注意,'row_number()'不是一個排名函數。 'rank()'和'dense_rank()'是。如果你不打電話給那個列,那麼你的數據就不太容易被誤解。像seq或sequence_number可能是一個更好的選擇。 – DatumPoint