目標:
我需要檢索最新消息日期(最大),數量及其附件行,和供應商名稱。
此外,我們需要將結果限制爲今年(2014-01-01 00:00:00)之後發送的郵件,郵件中有50k行或更多的附件。轉換MySQL查詢MS SQL Server的...對總需求沒有
嘗試:
看到這個sqlFiddle。
SELECT
v.name
,a.attachmentRows
,MAX(e.createdDate) recentDate
FROM emailMessage e
INNER JOIN vendor v
ON (e.vendorID = v.vendorID)
INNER JOIN emailAttachment a
ON (e.emailMessageID = a.emailMessageID)
WHERE e.createdDate > '2014-01-01 00:00:00.000'
AND a.attachmentRows >= 50000
GROUP BY e.vendorID
期望:
| NAME | ATTACHMENTROWS | RECENTDATE |
|-------------|----------------|---------------------------------|
| "Company C" | 123880 | February, 22 2014 10:00:00+0000 |
問題: 雖然我SQL技能是相當原始的,我與MySQL的味道還算舒服,所以我開始了我的fiddling有。該查詢按預期工作。
當切換到SQL Server,不過,我碰到這個錯誤每個選定字段:
,因爲它不是在聚合函數或載列「blahBlah」在選擇列表中無效GROUP BY子句。
我明白錯誤在告訴我什麼,但有三張表參與其中,我不知道如何補救它。 (當然,簡單地通過所有選定字段分組不會產生預期的效果。)
請求:
請幫幫忙!
啊..我明白你在那裏做了什麼。在@ $$取消關於「emailMessageID」遞增可能是危險的,它適用於這種情況。由於-A-一堆。 – mOrloff
確實,這不是一個完美的解決方案。您可能還希望加入我添加的新INNER JOIN中的emailAttachment表,並將> = 50000謂詞移入其中,以便獲得行數超過50K的max emailMessageID。希望它能幫助你至少指出正確的方向。 – JiggsJedi
完美!準確地說,我需要的手工。謝謝 – mOrloff