【发布时间】:2013-04-08 16:54:18
【问题描述】:
使用 ColdFusion 9 服务器和 MS-SQL db,我正在尝试创建 html 表,其中 td 值与来自同一个 MS-Sql db 表的值相关联。
查询 1 - 获取部门:
<cfquery datasource="datasrc" name="qGetDep">
SELECT DISTINCT Dept
FROM someTable
WHERE isnull(Dept, '') != ''
ORDER BY DEPT ASC
</cfquery>
查询 2 - 获取名称
<cfquery datasource="datasrc" name="qGetNam">
SELECT a.Dept, a.names
FROM someTable as a
INNER JOIN
(
SELECT DISTINCT Dept, MIN(ID) as ID, names
FROM someTable
GROUP BY Dept, names
) as b
ON a.Dept = b.Dept
AND a.ID = b.ID
WHERE isnull(a.Dept, '') != ''
ORDER BY a.Dept ASC
</cfquery>
index.cfm
<table border="1" id="table1">
<thead>
<tr>
<cfoutput query="qGetDep">
<th><b>#DEPT#</b></th>
</cfoutput>
</tr>
</thead>
<tbody>
<cfoutput query="qGetNam">
<tr>
<cfloop query="qGetDep">
<cfset cls= qGetDep.Dept>
<cfif qGetNam.Dept EQ cls >
<td class="#cls#">#qGetNam.names#</td>
<cfelse>
<td class="#cls#"></td>
</cfif>
</cfloop>
</tr>
</cfoutput>
</tbody>
</table>
使用我当前在 db 中的数据,这将输出类似于此的表:
我需要它变成这样。
jQuery 解决方案是可以接受的。
任何帮助将不胜感激。
谢谢。
【问题讨论】:
-
为什么你的第二个查询是循环的?
-
感谢您的关注,我刚刚删除了该标签。我的一次失败尝试,在我的第二个查询中,我使用了 WHERE a.Dept Like '#qGetDep.Dept#',但即使删除该循环仍然输出相同的表格格式。
-
这个是sql server,你有没有考虑过运行pivot查询?
-
我有,但由于某种原因我无法弄清楚,它只给了我一行记录。
SET @query = 'SELECT ' + @paramList + ' FROM(SELECT names, Dept FROM someTable )src PIVOT (MIN(name) FOR Dept IN (' + @paramList + ')) pvt' -
参数列表?您的 Coldfusion 查询似乎没有任何变量。
标签: jquery sql-server coldfusion