sql - 如何格式化输出以使其以句子形式输出?
问题描述
编写用于检索的 SQL 以检索每个提交维修的设备的序列号、描述、销售日期、请求维修的客户名称、维修说明以及维修费用。(需要加入两个表)。
格式化输出,使其以句子形式输出,如下所示:
“维修设备 9001 DVD 播放器,于 2018 年 1 月 1 日出售给 A.GREEN,以解决 DVD Stuck 问题,费用为 67.50 欧元”。
如果不存在十进制值,请确保输出零。
不知道用什么来格式化输出..搜索 dbms 并打印,但我不确定这是否是问题所要求的。提前致谢!
客户表
CUSTID | CUSTNAME | CUSTPHONE | CUSTEMAIL
1001 Aaa 0123 GReen@mail.com
1002 BBB 0121 bbb@mail.com
1003 CCCC 0333 ccc@mail.com
app修复表
serialNO | RepairDate| RepairDesc| repairCost | Customer_ID
9001 4-Mar-18 0123 67.5 1001
9002 4-JUN-18 0121 60.7 1002
9003 4-AUG-18 0333 102.5 1003
器具表
serialNO | appDESC | APPSALEDATE | GUARENTEELENGTH
9001 DVD PLAYER 1-jan-18 2
9002 FRIDGE FREEZER 3-may-18 5
9003 48 TV 5-jun-18 2
我的选择查询代码
select appliance.serialNo, appliance.appDesc, TO_CHAR(appliance.appSaleDate, 'DDTH MONTH YY') AS "SALE DATE",
UPPER(Customer.custName) AS "CUSTOMER NAME", Customer.custEmail from appliance
inner join appRepair ON appliance.serialNo=appRepair.serialNo
inner join Customer ON appRepair.customer_id=Customer.custID;
预期输出:
“维修设备 9001 DVD 播放器,于 2018 年 1 月 1 日出售给 A.GREEN,以解决 DVD Stuck 问题,费用为 67.50 欧元”。
解决方案
您可以使用包含多个连接的此类查询:
select 'The repair to appliance '||a.serialNo||' '||a.appDesc||
', sold on '||to_char(a.appSaleDate, 'DDTH MONTH RRRR')||
' to '||upper(substr(c.custEmail,1,instr(c.custEmail,'@')-1))||
' to solve the issue '||substr(a.appDesc,1,instr(a.appDesc,' ')-1)||
' Stuck will cost '||
ltrim(to_char(repairCost, 'U999G999D00',
'NLS_NUMERIC_CHARACTERS = ''.,''NLS_DUAL_CURRENCY=EUR'))
as "Output"
from appliance a
join appRepair ar on a.serialNo=ar.serialNo
join customer c on ar.customer_id=c.custID;
如果您的NLS_CHARACTERSET
DB 参数是,那么您可以将列WE8ISO8859P1
的最后一部分替换为Output
' Stuck will cost '||unistr('\20AC')||
ltrim(to_char(repairCost, '999G999D00',
'NLS_NUMERIC_CHARACTERS = ''.,'''))
能够看到欧元货币符号。
推荐阅读
- c# - 1 到 100 亿之间有多少个数字包含 14
- c# - 如何在 C# 中将 git 哈希转换为长度为 20 的字节数组?
- android - Android - Volley 库:SSL 生产环境中的会话过期问题
- javascript - 从另一个元素实例引用 Vue 实例
- java - 如何判断java类是否匿名?
- bash - 如何使用键盘输入模式打印每个块?
- azure - 应用注册认证密钥在哪里?
- vb.net - 如何防止复选框 Checkchanged 事件在 VB.Net 中触发
- python - Django-将用户名字段更改为 BigAutoField?
- php - 无法创建新的 Laravel 项目 - 解压缩 -qq 超时超过 300