我有一个从数据库中选择companyName
和department
的查询。当我在我的网站上显示时,它将按companyName
订购。
当我从部门添加select productSold
时,如果有2 productSold
,我的部门会分成2条记录。无论如何我可以在表格中显示1个有2条记录的部门。
感谢。
我的查询如下:
SELECT dbo.CompanyAdd.companyName,
dbo.OrderDetails.department,
dbo.OrderDetails.productSold
FROM dbo.CompanyAdd
INNER JOIN
dbo.OrderDetails
GROUP BY dbo.CompanyAdd.companyName,
dbo.OrderDetails.department,
dbo.OrderDetails.productSold
HAVING (dbo.User2Company.UsrID = 10)
ORDER BY
dbo.OrderDetails.department;
这是我的代码,用于检查以前的记录是否与当前记录相同。
<% dim productSold
Do While Not registerRS.EOF
Response.write"<table>"
Response.write "<tr>" %>
<td height="265.6" width="264.56">
<%=rS.Fields("companyName")%> <br />
<%=rS.Fields("department") %><br />
<%=rS.Fields("productSold") %><br />
</td>
<%
Response.write "</tr>"
If r = 4 then r = 1
'Next
if rS.Fields("productSold") <> productSold then
Response.write("productSold:" & productSold)
end if
rS.movenext
loop
Response.write "</table> "
rS.close
set rS=nothing
%>
答案 0 :(得分:1)
您未将变量productSold
设置为rS.Fields("productSold")
。如果在循环语句之前,你也会错过结束。
尝试将代码修改为类似的内容。
<% dim productSold
Do While Not registerRS.EOF
Response.write"<table>"
Response.write "<tr>" %>
<td height="265.6" width="264.56">
<%=rS.Fields("companyName")%> <br />
<%=rS.Fields("department") %><br />
if rS.Fields("productSold") <> productSold then
Response.write("productSold:" & productSold)
end if
</td>
<%
Response.write "</tr>"
If r = 4 then r = 1
'Next
if rS.Fields("productSold") <> productSold then
Response.write("productSold 2:" & productSold)
end if
productSold = rS.Fields("productSold") '<-- Set productSold variable
rS.movenext
loop
Response.write "</table> "
rS.close
set rS=nothing
%>
我在if
语句之外添加了它,但根据您的逻辑,您可能希望在if
语句中设置它。您评论说您在循环之前移动了rS.movenext
,它必须在循环之前,否则您的记录集永远不会到达下一条记录。
答案 1 :(得分:0)
如果您使用的是SQL Server 2005+,则可以将所有相同部门的产品连接到单个产品列表中,例如将它们分隔开来。使用行分隔符(在这种情况下,取决于您是偏好varchar
还是nvarchar
,它可以是CHAR(13) + CHAR(10)
或NCHAR(13) + NCHAR(10)
)。
该站点包含大量如何将一列值连接成单个值的示例。这只是其中的一个:
您可以浏览问题的链接部分,以查找更多类似的问题,从而获得更多示例。