首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每个存储区最常用的投标类型

每个存储区最常用的投标类型
EN

Stack Overflow用户
提问于 2014-10-16 18:12:35
回答 2查看 43关注 0票数 1

我需要一些帮助来构建这个MSSQL查询。我有一张有付款信息的桌子。表中的"payment_entry“是Storenumber和Tendertype的字段。每一次新购买都会在表"payment_entry“中创建”商店“和”招标类型“的新行。有两种投标类型"1“或"3”。1表示信用卡/借记卡,3代表现金。

我想要一个按商店分组的查询,每家商店有多少顾客付现金,有多少人用卡付款。

提前谢谢!!编辑:嗯,我不擅长SQL,但这给了我每个商店的投标类型1的计数。现在我卡住了..。

代码语言:javascript
复制
Select [company$Trans_ Payment Entry].[Store No_], 
Count([company$Trans_ Payment Entry].[Tender Type]) 
From [company$Trans_ Payment Entry] [company$Trans_ Payment Entry] 
Where [company$Trans_ Payment Entry].[Tender Type] = '1' 
Group By [company$Trans_ Payment Entry].[Store No_] 
Order By [company$Trans_ Payment Entry].[Store No_] 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-16 18:45:10

代码语言:javascript
复制
;WITH Store_Totals AS
 (
  SELECT [Store No_] AS StoreNum
        ,SUM(CASE WHEN tendertypes = 1 THEN 1 ELSE 0 END) AS Credit_Trans
        ,SUM(CASE WHEN tendertypes = 3 THEN 1 ELSE 0 END) AS Cash_Trans
        ,COUNT(tendertypes)  AS Total_Trans
  FROM [company$Trans_ Payment Entry]
  GROUP BY [Store No_]
 )
SELECT  StoreNum
       ,Credit_Trans / Total_Trans AS Average_Credit
       ,Cash_Trans   / Total_Trans AS Average_Cash
FROM Store_Totals 
票数 1
EN

Stack Overflow用户

发布于 2014-10-16 18:27:46

您可以通过基于案例的聚合来完成这一任务。

代码语言:javascript
复制
SELECT store, 
       (SUM(CASE WHEN tendertype =1 THEN 1 ELSE 0 END)*100.0/COUNT(tenderType)) AS CreditPerc,
       SUM(CASE WHEN tendertype =3 THEN 1 ELSE 0 END)*100.0/COUNT(tenderType) as CashPerc
FROM payment_entry
GROUP BY store
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26411170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档