2

使用 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>

索引.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 解决方案是可以接受的。
任何帮助将不胜感激。
谢谢你。

4

1 回答 1

0

我是根据我对您的“实际私人数据”的假设来回答这个问题的。

希望即使我的假设是错误的,这可能会让你朝着正确的方向前进。

如果这是你的 -

部门表

部门表

这是你的

人员表

人员表

然后使用这个查询 -

SELECT *
  FROM (
        SELECT a.id AS pid
              ,a.NAME
              ,b.dept
          FROM deptPeople a
              ,deptTable b
         WHERE a.dept = b.dept
       ) AS A
  PIVOT(
        MIN(NAME) FOR dept IN ( dept1, dept2, dept3, dept4, dept5)
       ) AS B

会给你

最后结果

像这样结合 ColdFusion 中的所有内容 -

<cfquery datasource="que_tempdb_int" name="qGetDep">
    SELECT dept
    FROM deptTable
    ORDER BY DEPT ASC
</cfquery>

<cfset allDept = valuelist(qGetDep.dept,',') />

<cfquery name="qGetNam" datasource="que_tempdb_int">
    SELECT *
      FROM (
            SELECT a.id AS pid
                  ,a.NAME
                  ,b.dept
                  FROM deptPeople a
                  ,deptTable b
             WHERE a.dept = b.dept
           ) AS A
      PIVOT(
            MIN(NAME) FOR dept IN (#allDept#)
           ) AS B
</cfquery>

<table border="1" id="table1">
    <thead>
        <tr>
            <cfoutput query="qGetDep">
                <th><b>#DEPT#</b></th>
            </cfoutput>
        </tr>
    </thead>
    <tbody>
    <cfoutput query="qGetNam">
        <tr>
            <cfloop list="#allDept#" index="dept" delimiters=",">
            <td>#qGetNam[dept][qGetNam.currentRow]#</td>
            </cfloop>
        </tr>
    </cfoutput>
    </tbody>
</table>

最后结果 -

HTML 数据透视表

于 2013-04-09T09:32:21.943 回答