gpt4 book ai didi

sql - 我想编写一个汇总查询并将结果显示在一个表中

转载 作者:行者123 更新时间:2023-12-04 14:29:14 24 4
gpt4 key购买 nike

我需要编写一份关于 3 个不同状态值的摘要报告,每个状态都有一个计数和一个金额列,结果显示在一个表格中。例如,输出将如下所示:

enter image description here

生成每行代码(在单个输出中)的查询是:

select case when status_key = '2' then 'Paid' else '' end as 'Status'
, COUNT(BillNo) as [Count]
, SUM(amtpd) as [Amount Paid]
from billtable
where client = 101
and status_key = '2'
group by status_key

select case when status_key = '1' then 'Queued' else '' end as 'Status'
, COUNT(BillNo) as [Count]
, SUM(amtpd) as [Amount Paid]
from billtable
where client = 101
and status_key = '1'
group by status_key

select case when status_key = '4' then 'Hold' else '' end as 'Status'
, COUNT(BillNo) as [Count]
, SUM(amtpd) as [Amount Paid]
from billtable
where client = 101
and status_key = '4'
group by status_key

这会产生三个结果,例如:

enter image description here

我正在使用 SQL Server 数据库和 SSMS 来开发查询。

最佳答案

不需要联合。

使用 WHERE 仅筛选出您想要的 status_keys,然后展开您的 CASE 语句以将数字重新编码为单词。

select
case when status_key = '2' then 'Paid'
when status_key = '1' then 'Queued'
when status_key = '4' then 'Hold'
else 'Error!' end AS [Status],
COUNT(BillNo) AS [Count],
SUM(amtpd) AS [Amount Paid]
from
billtable
where
client = 101
AND status_key IN ('1','2','4')
group by
status_key

EDIT 使用维度表修改示例

select
status.description AS [Status],
COUNT(bill_table.BillNo) AS [Count],
SUM(bill_table.amtpd) AS [Amount Paid]
from
billtable
inner join
status
on billtable.status_key = status.key
where
bill_table.client = 101
AND bill_table.status_key IN ('1','2','4')
group by
status.description

然后您可以拥有从statusbilltable 的外键约束。这将确保数据不能插入到billtable,除非在status中有相应的key。

您的查找将始终有效。但是,如果未正确填充 status 表,则会以插入失败的“成本”为代价。

这种事实表维度表结构是关系数据库设计的基础。

关于sql - 我想编写一个汇总查询并将结果显示在一个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12640180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com