Sql SAP HANA-计数(*)提供不同的输出
我们正在使用SAP HANA 1.0 SPS12 当我在下面运行查询时-Sql SAP HANA-计数(*)提供不同的输出,sql,sap,hana,Sql,Sap,Hana,我们正在使用SAP HANA 1.0 SPS12 当我在下面运行查询时- select count(*) from ( SELECT A.MATNR ARTICLE, A.WERKS SITE, ROUND((SUM(COALESCE((CASE WHEN A.BWART IN('551','951') THEN(A.DMBTR) END),0))-SUM(COALESCE((CASE WHEN A.BWART IN('552
select count(*)
from ( SELECT A.MATNR ARTICLE,
A.WERKS SITE,
ROUND((SUM(COALESCE((CASE WHEN A.BWART IN('551','951') THEN(A.DMBTR) END),0))-SUM(COALESCE((CASE WHEN A.BWART IN('552','952') THEN(A.DMBTR) END),0)))) DUMP_VALUE,
ROUND((SUM(COALESCE((CASE WHEN A.BWART IN('551','951') THEN(A.MENGE) END),0))-SUM(COALESCE((CASE WHEN A.BWART IN('552','952') THEN(A.MENGE) END),0)))) DUMP_QTY
FROM MSEG A
INNER JOIN S_SITE_MASTER B ON A.WERKS=B.STORE_NO
INNER JOIN S_PRODUCT_MASTER C ON A.MATNR=C.MATERIAL
WHERE A.BUDAT_MKPF >= ADD_MONTHS(NEXT_DAY(LAST_DAY(ADD_DAYS(CURRENT_DATE,-1))),-1)
AND A.BUDAT_MKPF <= ADD_DAYS(CURRENT_DATE,-1)
AND A.BWART IN ('551','552','951','952')
AND C.LEVEL2 = 10
AND B.FORMAT_CD IN ('1')
GROUP BY A.MATNR,
A.WERKS
);
输出计数-29403(这是正确的计数)
B.FORMAT_CD的数据类型为NVARCHAR(3)
计数的行为如何不同?如果
B.FORMAT\u CD
是一个字符串,那么这是比较值的正确方法:
B.FORMAT_CD IN ('1')
当您这样做时:
B.FORMAT_CD IN (1)
然后将B.FORMAT\u CD
转换为字符串。我不确定这些值是什么样的,但是在这种情况下,'001'
和'01'
会匹配
这解释了差异,但并不能解释为什么('1')中的
返回的值比(1)
中的返回的值要多,请您帮助我提供任何文档或注释,说明count(*)对不同数据类型的工作方式不同吗?对不起,我是新技术人员。在Oracle上运行相同的查询时,两种情况下得到的结果相同。Oracle是否固有地处理此问题,而SAP HANA也在这样做?您是否确定计数与这两个查询正确关联。是的计数是实际输出良好点。查看数据并尝试在('1','01','001')等中使用B.FORMAT_CD。。如果你的计数有变化,我会很感兴趣的。
B.FORMAT_CD IN (1)