我有一个查询来检索oracle数据库中某些表的数据。
我最终需要的是获取所有不重复的数据,为了实现这一点,我需要所有不具有相同FOLIO,TARJETA,CUENTA和IMPORTE的记录。 所以为此,我尝试使用Distinct和Group by但我不知道在脚本中应该在哪里/如何使用它,如果它可能在哪里可以更有效。
我尝试将GROUP BY与ORDER BY之前的值放在一起,但它表示“不是GROUP BY表达式”。我不想修改查询只是删除重复的参数(FOLIO,TARJETA,CUENTA和IMPORTE)。
1)--Declare namespace and call the java String class
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:jString="http://www.oracle.com/XSL/Transform/java/java.lang.String">
2)--Created a template to search for tag inputs that have an ampersand:
<xsl:template name="string-replace-all">
<xsl:param name="text" />
<xsl:choose>
<xsl:when test="contains($text, '&')">
<xsl:variable name="str1" select="jString:new($text)"/>
<xsl:value-of select="jString:replace($str1,'&','&')" />
<xsl:otherwise>
<xsl:value-of select="$text" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
3)--Call the template in the specific tags
<Nm>
<xsl:variable name="suppNm">
<xsl:call-template name="string-replace-all">
<xsl:with-param name="text" select="Payee/Name" />
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="$suppNm" />
</Nm>
答案 0 :(得分:1)
在您的情况下,您不希望获得重复的结果,因此您最好的选择是DISTINCT。
DISTINCT和GROUP BY至少没有区别(Oracle风格):
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:32961403234212
Normaly GROUP BY用于MAX,MIN等聚合函数。区别只是删除重复。
SQL Server检测您是否没有聚合函数并生成执行计划,就像您只是使用“Distinct”一样。真的没有什么大不同。
因此,使用DISTINCT,您可以使用正确的概念。 希望这会有所帮助。