2011-12-13 16 views
-2

我有一個包含綁定到特定日期的不同商品的表。取決於價格變化的日期。我想得到每個日期最便宜的交易。SqlGroupBy在結果集中有一個字段,如group by子句中的

我的問題是,我通過像使用一組:

選擇價格,從日交易團,價格日期

顯示的報價,我需要更多的記錄這不是group by子句。最好的領域將是我的自動化,所以如果客戶選擇具有特定價格的報價,我可以使用第二選擇顯示該報價及其所有字段。

我希望這可以更簡單地回答我的問題。我試圖保持它的通用性可能的,但它並沒有描述不夠清楚:-)

+0

你想看到什麼的'ID'每個日期? 'MAX','MIN',一些隨機值? – JNK

+0

Group By通常表示某種您在描述中沒有的聚合函數。您是否在尋找特定日期的價格總和?如果您只想按日期組織所有價格和產品ID並在詳細級別顯示,則應使用OrderBy而不是GroupBy。 – hqrsie

+0

我每天有5次使用不同的價格購買同一款產品,我希望每天都能獲得特定產品類型的最佳優惠。 – NickD

回答

2

我有感覺就在Id列添加到列表GROUP BY

SELECT id, date, price 
FROM products 
GROUP BY id, date, price 

否則Sql Server中無法識別ID是返回由價格和日期行分組,例如考慮以下兩個行:

1 | 10-10-2010 | 100 | 
2 | 10-10-2010 | 100 | 

哪個Id值應爲這是由日期和價格分組行被選中?

??? | 10-10-2010 | 100 | 
+1

是的。按日期和價格分組。 – NickD

+0

您期望看到哪個結果集?只需提供輸入數據和預期輸出。也許每個日期的總價格?所以只需使用'select,id,date,SUM(price)FROM table group by id,date',或者什麼? – sll

+2

@Snoopy - 有史以來最好的評論 –

1

你要麼需要在ID指定aggregate function或條款將其添加到您的組像@sll建議。總結例子:

SELECT MAX(id), date, price 
FROM products 
GROUP BY date, price 
1

如果從選擇條款刪除ID,你將有日期價格的所有不同夫妻的列表。

如果添加ID集團通過條款,因爲它是一個身份,你會得到每每條記錄一行在你的桌上,讓您的集團通過條款會不會有用。

第三種方法是在ID使用聚合功能選擇子句中,以獲得一個值的每一個組(第一,最小,最大,等等)。

0

喜集團通過是有用的,當你正在做計數等

SELECT [Display Billing Provider], [Display Insurance Category] 
, SUM([TOTAL RVUs]) AS RVUs_08 
, SUM([Units]) AS Units_08 
, SUM(Payments) AS Payments_08 
FROM dbo.ProductivityAnal_2008 
GROUP BY [Display Billing Provider],[Display Insurance Category] 
ORDER BY [Display Billing Provider],[Display Insurance Category] 

感謝安倍

+0

只是想知道你從哪裏得到了這個查詢? – sll

+0

這個查詢有問題;-) –

+0

@CodeSaint,我downvoted。看起來你剛剛在網上找到了一個「GROUP BY」查詢的例子,並將其粘貼到這裏,而沒有試圖引用任何問題。我個人認爲你應該嘗試根據已經提出的問題來定製你的答案。 –