我有結構類似SUM對列組
tasktime - starttime,endtime,packagedetailid,packageid
packagedetailid - packageid,productid, etc
productime - productid and searchesperday
,我使用這些查詢三個表如下所示
SELECT CONVERT(varchar, t.StartTime, 111) AS 'Date'
, SUM(DATEDIFF(second, t.StartTime, t.EndTime))/60 AS DailyMinutes
, COUNT(DISTINCT p.PackageDetailID) AS OrderCount
, LEFT(CAST(SUM(DATEDIFF(minute, t.StartTime, t.EndTime))
/(COUNT(DISTINCT p.PackageDetailID) + 0.0000001) AS varchar), 4) AS PerOrder
, LEFT(CAST((COUNT(DISTINCT p.PackageDetailID) * 100)
/(e.SearchesPerDay + 0.00000001) AS varchar), 4) AS WeightedOrderCount
FROM ProductTime AS e INNER JOIN dbo.PackageDetails AS p
WITH (NOLOCK) ON e.ProductID = p.ProductID INNER JOIN
TaskTime AS t WITH (NOLOCK) ON p.PackageDetailID = t.PackageDetailId
WHERE(t.EndTime IS NOT NULL)
AND (DATEDIFF(hour, t.StartTime, t.EndTime) < 1)
AND (DATEDIFF(second, t.StartTime, t.EndTime) > 0)
AND (t.UserId = '12345')
AND (t.StartTime BETWEEN '1/1/2010'
AND '9/13/2010')
GROUP BY CONVERT(varchar, t.StartTime, 111), e.SearchesPerDay
ORDER BY CONVERT(varchar, t.StartTime, 111)
輸出爲:
**date dailyminutes ordercount perorder weightordercount**
2010/01/04 104 26 4.03 43.30
2010/01/04 10 1 9.99 1.24
2010/01/04 19 8 2.37 8.88
2010/01/04 22 11 1.99 10.90
2010/01/04 18 5 3.59 2.77
2010/01/05 49 17 2.99 28.30
2010/01/05 31 5 6.39 5.55
2010/01/05 26 6 4.33 5.99
2010/01/05 8 4 1.99 3.33
但我想整理日期"Weightordercount"
,以便輸出爲
**date dailyminutes ordercount perorder weightordercount**
2010/01/04 173 51 21.97 67.09
2010/01/05 114 32 15.70 43.17
我不是一個SQL專家,需要你的幫助,如果這可以通過一個SQL命令或通過Strored過程
感謝提前實現
請在提交前預覽您的問題。您選擇文本並使用'{}'圖標格式化爲代碼。同樣爲了格式化SQL,您可以使用http://www.dpriver.com/pp/sqlformat.htm –
這是一團糟,如何格式化該代碼。選擇代碼,按 + G,並輸入正確的換行符和縮進。 –
Johan
難怪你對SQL有問題 - 保持整潔並格式化,以便有機會編寫好的查詢 – Bohemian