cus_arr.cpp

  name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-5572165936844014&dt=1194442938015&lmt=1194190197&format=336x280_as&output=html&correlator=1194442937843&url=file%3A%2F%2F%2FC%3A%2FDocuments%2520and%2520Settings%2Flhh1%2F%E6%A1%8C%E9%9D%A2%2FCLanguage.htm&color_bg=FFFFFF&color_text=000000&color_link=000000&color_url=FFFFFF&color_border=FFFFFF&ad_type=text&ga_vid=583001034.1194442938&ga_sid=1194442938&ga_hid=1942779085&flash=9&u_h=768&u_w=1024&u_ah=740&u_aw=1024&u_cd=32&u_tz=480&u_java=true" frameborder="0" width="336" scrolling="no" height="280" allowtransparency="allowtransparency"> #include <iostream.h>
#include <stdlib.h>

class loc
{
  int longitude, latitude;
  public:
    loc(void) {}                //  Used to construct temporaries
    loc (int lg, int lt)
      {
      longitude = lg;
      latitude = lt;
      }

    void show(void)
      {
      cout << longitude << " ";
      cout << latitude << endl;
      }

    void *operator new(size_t size);
    void operator delete(void *p);
    void *operator new[](size_t size);
    void operator delete[](void *p);
 };

void *loc::operator new(size_t size)
 {
 cout << "In the custom new function." << endl;
 return malloc(size);
 }

void loc::operator delete(void *p)
 {
 cout << "In the custom delete function." << endl;
 free(p);
 }

void *loc::operator new[](size_t size)
 {
 cout << "In the custom new ARRAY allocator function." << endl;
 return malloc(size);
 }

void loc::operator delete[](void *p)
 {
 cout << "Freeing the ARRAY in the custom delete function." << endl;
 free(p);
 }

void main(void)
  {
  loc *p1, *p2;
  int i;

  p1 = new loc(10,20);
  if (!p1)
 {
    cout << "Allocation error/n";
    exit(1);
   }

  p2 = new loc[10];
  if (!p2)
   {
    cout << "Allocation error/n";
      exit(1);
   }
  p1->show();
  for(i=0; i<10; i++)
    p2[i].show();
  delete p1;
  delete [] p2;
 }

错误 `[Error 10007]: Ambiguous column reference serialno in cus_mes_serialno` 表明在 SQL 查询中,`serialno` 列的引用存在歧义,即有多个表包含 `serialno` 列,数据库无法明确具体引用的是哪个表的该列。为了解决这个问题,需要在引用列时明确指定表名或使用表别名。 以下是优化后的 SQL 代码: ```sql -- 定义 CUS_ORDERNO_DETAILS 公共表表达式 WITH CUS_ORDERNO_DETAILS AS ( SELECT * FROM default.std_wms_cus_orderno_details WHERE ds >= '${yyyyMM,-1m}' AND CUSTOMERID IN ('1643', '1301', '1891', '1783') ), -- 定义 CUS_MES_SERIALNO 公共表表达式 CUS_MES_SERIALNO AS ( SELECT cms.HEDI02, cms.SERIALNO, cms.HEDI13, cms.HEDI14, cms.HEDI19, cms.ORGANIZATIONID, cms.WAREHOUSEID, cms.CUSTOMERID, cms.TRACEID FROM CUS_ORDERNO_DETAILS s LEFT JOIN default.STD_WMS_CUS_MES_SERIALNO cms ON cms.ORGANIZATIONID = s.ORGANIZATIONID AND cms.WAREHOUSEID = s.WAREHOUSEID AND cms.CUSTOMERID = s.CUSTOMERID AND cms.TRACEID = s.TRACEID AND cms.asntype NOT IN ('ZLR') AND cms.CUSTOMERID IN ('1643', '1301', '1891', '1783') WHERE cms.ORGANIZATIONID IS NOT NULL ), -- 定义 CUS_MES_SUBSERIALNO 公共表表达式 CUS_MES_SUBSERIALNO AS ( SELECT cms.*, cmss.* FROM CUS_MES_SERIALNO cms LEFT JOIN default.std_wms_cus_mes_subserialno cmss ON cmss.ORGANIZATIONID = cms.ORGANIZATIONID AND cmss.WAREHOUSEID = cms.WAREHOUSEID AND cmss.LOTATT05 = cms.CUSTOMERID AND cmss.TRACEID = cms.TRACEID AND cmss.SERIALNO = cms.SERIALNO AND cmss.LOTATT05 IN ('1643', '1301', '1891', '1783') AND cmss.ORGANIZATIONID = 'JINKO' WHERE cmss.ORGANIZATIONID IS NOT NULL ) -- 查询 CUS_MES_SUBSERIALNO 中的记录数量 SELECT COUNT(1) FROM CUS_MES_SUBSERIALNO; ``` ### 优化点说明 1. **消除列引用歧义**:在 `CUS_MES_SERIALNO` 和 `CUS_MES_SUBSERIALNO` 公共表表达式中,明确使用表别名来引用列,避免了列引用的歧义。 2. **去除重复列选择**:原代码中 `CUS_MES_SERIALNO` 部分 `cms.SERIALNO` 重复选择,已去除多余的选择。 3. **使用表别名**:在连接操作中使用表别名,使代码更易读和维护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值