1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > SQL语句查询条数不足10行时如何自动补充空行

SQL语句查询条数不足10行时如何自动补充空行

时间:2021-06-02 01:46:42

相关推荐

SQL语句查询条数不足10行时如何自动补充空行

在用ireport只做报表时,客户要求显示至少十行数据,不足十行时,显示空行。

ireport的数据源是数据库sql,一般情况就是查出来,是多少就显示多少。现在这个报表,需要嵌入子表,如果头表只有一条或数据比较少时,头行之间的空表会比较难看,所以要求显示空行信息。

数据少于10条

1)普通SQL查询

SELECT ITEM_ID || '' ITEM_ID, ITEM_CODE, DESCRIPTIONSFROM MTL_ITEMSWHERE ITEM_ID IN (17721, 17239)

2)查询结果

3)补充行SQL查询

SELECT ITEM_ID || '' ITEM_ID, ITEM_CODE, DESCRIPTIONSFROM MTL_ITEMSWHERE ITEM_ID IN (17721, 17239)UNION ALLSELECT '', '', ''FROM DUALWHERE (CASEWHEN (SELECT COUNT(1) FROM MTL_ITEMS WHERE ITEM_ID IN (17721, 17239)) >= 10 THEN2ELSE1END) = 1CONNECT BY LEVEL <(11 -(SELECT COUNT(1) FROM MTL_ITEMS WHERE ITEM_ID IN (17721, 17239)))

4)查询结果

数据大于10条

1)普通SQL查询

SELECT ORG_ID,ITEM_ID,UOM_CODE FROM MTL_ITEMS WHERE ITEM_ID BETWEEN 17721 AND 17750

2)查询结果

3)补充行SQL查询

SELECT ORG_ID || '', ITEM_ID || '', UOM_CODEFROM MTL_ITEMSWHERE ITEM_ID BETWEEN 17721 AND 17750UNION ALLSELECT '', '', ''FROM DUALWHERE (CASEWHEN (SELECT COUNT(1)FROM MTL_ITEMSWHERE ITEM_ID BETWEEN 17721 AND 17750) >= 10 THEN2ELSE1END) = 1CONNECT BY LEVEL <(10 - (SELECT COUNT(1)FROM MTL_ITEMSWHERE ITEM_ID BETWEEN 17721 AND 17750))

4)查询结果

可以看到,当查询数据不足十条时,该SQL可以补充空行,使结果显示十条;而当查询数据大于等于十条时,显示结果与普通SQL一致。

该sql如果在JAVA端进行拼接的话,可以先查询出普通sql语句能够返回的数据条数,然后再嵌入后面另个子查询中去,相对而言会比较直观,大概数据小于10行时,还可以减少一次sql查询。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。