SQL Server计算sql数据透视值的百分比

发布于 2025-01-04 04:00:13 字数 864 浏览 1 评论 0原文

我目前有一个 SQL Server 数据透视表,其中包含每月和每个输入销售额的值,

我想计算 input_sales = 'OK' 的百分比。

我该怎么做?

SIGNED  INPUT_SALES DEALER     D2D  CALLCENTER  INTERNET</tr>
2012-01 NOK          158       1231     309       214
2012-01 OK           417       4634    4047      1491
2011-12 NOK          301       1637     404       245
2011-12 OK           615       4195    4334      1985

我的代码:

SELECT SIGNED_DATE, 
    INPUT_SALES, 
    [DEALER] AS DEALER, 
    [D2D] AS D2D, 
    [CALLCENTER] AS CALLCENTER, 
    [INTERNET] AS INTERNET
FROM
(
    SELECT ENTITLEMENT_ID, SALES_CHANNEL, SIGNED_DATE, INPUT_SALES
    FROM #TEMP
) T
PIVOT
(
    COUNT (ENTITLEMENT_ID)
    FOR SALES_CHANNEL IN
        ([DEALER], [D2D], [CALLCENTER], [INTERNET])
) AS PVT
ORDER BY PVT.SIGNED_DATE DESC

I currently have a SQL Server pivot with values per month and per input sales

I want to calculate % of input_sales = 'OK'.

How can I do this?

SIGNED  INPUT_SALES DEALER     D2D  CALLCENTER  INTERNET</tr>
2012-01 NOK          158       1231     309       214
2012-01 OK           417       4634    4047      1491
2011-12 NOK          301       1637     404       245
2011-12 OK           615       4195    4334      1985

My Code:

SELECT SIGNED_DATE, 
    INPUT_SALES, 
    [DEALER] AS DEALER, 
    [D2D] AS D2D, 
    [CALLCENTER] AS CALLCENTER, 
    [INTERNET] AS INTERNET
FROM
(
    SELECT ENTITLEMENT_ID, SALES_CHANNEL, SIGNED_DATE, INPUT_SALES
    FROM #TEMP
) T
PIVOT
(
    COUNT (ENTITLEMENT_ID)
    FOR SALES_CHANNEL IN
        ([DEALER], [D2D], [CALLCENTER], [INTERNET])
) AS PVT
ORDER BY PVT.SIGNED_DATE DESC

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

锦爱 2025-01-11 04:00:13

试试这个:

select INPUT_SALES , cast(count(*) as numeric(5,2)) * 100 /(select count(*) from TABLE_INPUT_SALES )
from TABLE_INPUT_SALES 
where INPUT_SALES ='OK'
group by INPUT_SALES 

try this:

select INPUT_SALES , cast(count(*) as numeric(5,2)) * 100 /(select count(*) from TABLE_INPUT_SALES )
from TABLE_INPUT_SALES 
where INPUT_SALES ='OK'
group by INPUT_SALES 
等待圉鍢 2025-01-11 04:00:13

应该是希望

with total as (
select COUNT(INPUT_SALES)as id from t),
counted as (select count(INPUT_SALES) as id from t where t.INPUT_SALES='OK')
select 100.0*counted.INPUT_SALES/total.INPUT_SALES from total,counted
group by total.INPUT_SALES,counted.INPUT_SALES

它有帮助

should be something like

with total as (
select COUNT(INPUT_SALES)as id from t),
counted as (select count(INPUT_SALES) as id from t where t.INPUT_SALES='OK')
select 100.0*counted.INPUT_SALES/total.INPUT_SALES from total,counted
group by total.INPUT_SALES,counted.INPUT_SALES

hope it helps

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文