Sql server T-SQL查询,包括连接、大小写时间、分组等。帮助!:(

Sql server T-SQL查询,包括连接、大小写时间、分组等。帮助!:(,sql-server,tsql,join,ssms,Sql Server,Tsql,Join,Ssms,免责声明-我很抱歉,如果我解释这一点在一个困难的方式lol 你好! 我一直在想。 所以我有一个类似的查询,我简化了数据- 选择S.StoreName、I.ItemName、T.CreditAmount、T.DebitAmount 来自TransactionTablet 左JOIN ItemsTable I ON I.Id=T.ItemID S.Id=T.StoreId上的左连接存储 按门店、项目、贷记金额、借记金额分组 这就是结果 Store Name| Item | CreditAm

免责声明-我很抱歉,如果我解释这一点在一个困难的方式lol

你好!

我一直在想。 所以我有一个类似的查询,我简化了数据-

选择S.StoreName、I.ItemName、T.CreditAmount、T.DebitAmount

来自TransactionTablet

左JOIN ItemsTable I ON I.Id=T.ItemID

S.Id=T.StoreId上的左连接存储

按门店、项目、贷记金额、借记金额分组

这就是结果

Store Name| Item      | CreditAmount | DebitAmount
------------------------------------------------------------------
Store 1   | Bread     | 1000         |  0
Store 1   | Eggs      |  0           |  250
Store 1   | Bacon     |  0           |  310
Store 2   | Rice      | 700          |  0
Store 2   | Beans     | 135          |  0
Store 2   | Quinoa    | 111          |  0
Store 3   | Yam       | 0            |  120
Store 3   | Potatoes  | 0            |  120
Store 3   | Cocoyam   | 120          |  0
我想要的结果是

TransactionCategory | Items    | SumOfAllCreditsInTHisStore| SumOfAllDebitsInThisStore 
Store 1             | Bread    | 1000                      | 560
Store 1             | Eggs     | 1000                      | 560
Store 1             | Bacon    | 1000                      | 560
Store 2             | Rice     | 946                       | 0
Store 2             | Beans    | 946                       | 0
Store 2             | Quinoa   | 946                       | 0
Store 3             | Yam      | 120                       | 240
Store 3             | Potatoes | 120                       | 240
Store 3             | Cocoyam  | 120                       | 240
我需要一个能引出

a商店名称 b商店里出售的商品 c商店中所有积分的总和,不考虑项目 d商店中所有借项的总和,不考虑项目 建议???

解决方案适用于SQL Server 2012及更高版本:
我相信您的解决方案也适用于几个早期版本:@uzi SUM OVER bla bla…是在SQL Server 2012中引入的,我很确定它在SQL Server 2008中不存在。R2:SUM OVER bla bla…是在SQL 2005中引入的。SUM OVER bla bla…**ORDER BY**是在2012年引入的。下面是一个证明
SELECT DISTINCT 
       S.StoreName
     , I.ItemName
     , SUM(T.CreditAmount) OVER (PARTITION BY S.StoreName) AS SumOfAllCreditsInTHisStore
     , SUM(T.DebitAmount) OVER (PARTITION BY S.StoreName) AS SumOfAllDebitsInThisStore

FROM TransactionsTable T

LEFT JOIN ItemsTable I ON I.Id = T.ItemID

LEFT JOIN StoresTable S ON S.Id = T.StoreId
SELECT S.StoreName AS TransactionCategory, I.ItemName AS Items , 
SUM (T.CreditAmount) OVER (PARTITION BY S.StoreName ORDER BY Item ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS SumOfAllCreditsInTHisStore, 
SUM (T.DebitAmount) OVER (PARTITION BY S.StoreName ORDER BY Item ROWS BETWEEN  UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS SumOfAllDebitsInThisStore
FROM TransactionsTable T
LEFT JOIN ItemsTable I ON I.Id = T.ItemID
LEFT JOIN StoresTable S ON S.Id = T.StoreId
GROUP BY S.StoreName, I.ItemName, T.CreditAmount, T.DebitAmount;