我是 ASP.NET 和 Oracle SQL 的新手。我正在尝试创建一个长 SQL 字符串(使用UNION ALL
),然后将该字符串传递给处理其余部分的数据处理程序类。这个问题肯定存在于我的 SQL 字符串中。
这是我的代码的第一部分,它运行完美:
sql = "SELECT 'DCS - HCA (81)', HCA_SENT_DCS, HCA_VALID_DCS, HCA_SUSPEND_DCS, HCA_REJECTED_DCS,"
sql &= " SUM(HCA_VALID_DCS + HCA_SUSPEND_DCS + HCA_REJECTED_DCS) As ""Total Returned"","
sql &= " RESOLVED_CNT, SUM(HCA_REJECTED_DCS - RESOLVED_CNT) As ""To Do"""
sql &= " FROM HUB_CDI_CONTROL_NBRS WHERE REPORT_DATE = :0 "
_param.Add(dateSelected.ToString("dd-MMM-yyyy"))
sql &= " GROUP BY HCA_SENT_DCS, HCA_VALID_DCS, HCA_SUSPEND_DCS, HCA_REJECTED_DCS,"
sql &= " RESOLVED_CNT"
但是,当我尝试UNION
使用另一条语句执行此 SQL 时SELECT
,出现以下异常:
ORA-00933: SQL command not properly ended
这是完整的代码:
sql = "SELECT 'DCS - HCA (81)', HCA_SENT_DCS, HCA_VALID_DCS, HCA_SUSPEND_DCS, HCA_REJECTED_DCS,"
sql &= " SUM(HCA_VALID_DCS + HCA_SUSPEND_DCS + HCA_REJECTED_DCS) As ""Total Returned"","
sql &= " RESOLVED_CNT, SUM(HCA_REJECTED_DCS - RESOLVED_CNT) As ""To Do"""
sql &= " FROM HUB_CDI_CONTROL_NBRS WHERE REPORT_DATE = :0 "
sql &= " GROUP BY HCA_SENT_DCS, HCA_VALID_DCS, HCA_SUSPEND_DCS, HCA_REJECTED_DCS,"
sql &= " RESOLVED_CNT"
sql &= " UNION ALL"
sql &= "SELECT 'SFDC - HCA (82)', HCA_SENT_SFDC, HCA_VALID_SFDC, HCA_SUSPEND_SFDC, HCA_REJECTED_SFDC,"
sql &= " SUM(HCA_VALID_SFDC + HCA_SUSPEND_SFDC + HCA_REJECTED_SFDC) As ""Total Returned"","
sql &= " RESOLVED_CNT, SUM(HCA_REJECTED_SFDC - RESOLVED_CNT) As ""To Do"""
sql &= " FROM HUB_CDI_CONTROL_NBRS WHERE REPORT_DATE = :0 "
sql &= " GROUP BY HCA_SENT_SFDC, HCA_VALID_SFDC, HCA_SUSPEND_SFDC, HCA_REJECTED_SFDC,"
sql &= " RESOLVED_CNT"
_param.Add(dateSelected.ToString("dd-MMM-yyyy"))
_DH.TheSQL = sql
_DT = _DH.GetTableWithParameters(_param.ToArray)
我关心这段代码的两个部分:
我是否正确调用了 _param.Add() 函数?由于我引用参数两次,使用
:0
,我只需要使用 _param.Add() 函数一次吗?我觉得我错误地使用了
GROUP BY
语法。当我试图在不使用的情况下运行查询时,Oracle 对我大喊大叫GROUP BY
,但我不确定我是否正确使用它们。本质上,我只是将每一列添加SELECTed
到GROUP BY
否则,我确定我还缺少其他错误。请帮忙!
谢谢你。