Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在表格面板中动态显示数据_Sql Server - Fatal编程技术网

Sql server 如何在表格面板中动态显示数据

Sql server 如何在表格面板中动态显示数据,sql-server,Sql Server,我正在使用C语言开发一个windows应用程序。在这个应用程序中,有一个表单我希望在表格布局面板中显示按类别的书籍图像。对于每个类别,我希望显示5个书籍图像 我用来检索分类图书的查询是 WITH CategoryCTE AS ( SELECT BookName, ROW_NUMBER() OVER ( PARTITION BY CategoryName ORDER BY CategoryName DESC

我正在使用C语言开发一个windows应用程序。在这个应用程序中,有一个表单我希望在表格布局面板中显示按类别的书籍图像。对于每个类别,我希望显示5个书籍图像

我用来检索分类图书的查询是

WITH CategoryCTE AS (
    SELECT 
        BookName,
        ROW_NUMBER() OVER (
            PARTITION BY CategoryName
            ORDER BY CategoryName DESC
        ) AS CTE_Order
    FROM BookMaster
)
SELECT bm.BookName,bm.BookImage, cm.CategoryName, scm.SubCategoryName
FROM 
    CategoryCTE 
    INNER JOIN BookMaster bm ON CategoryCTE.BookName = bm.BookName
    INNER JOIN CategoryMaster cm ON bm.CategoryName = cm.Oid
    INNER JOIN SubCategoryMaster scm ON bm.SubCategoryName = scm.Oid
WHERE CategoryCTE.CTE_Order < 6
GROUP BY cm.CategoryName, scm.SubCategoryName, bm.BookName,bm.BookImage
这个查询为我提供了正确的输出,即每个类别中有5本书。 但问题是,我想在表面板中显示书籍图像,即第1行有5个类别1的书籍图像,第2行有类别2的书籍图像,依此类推。现在我的数据库中有4个书籍类别。这意味着表布局面板的行取决于数据库中的类别表,表的列是固定的,即第一列是类别名称,其他5列有书籍图像

我希望我已经正确地解释了我的问题。请为我提供任何解决方案。
提前谢谢

如果希望结果看起来像:

CategoryName   Book1         Book2             Book3           Book4          Book5
------------   -----------   ---------------   --------------  -------------  ------------
Cat1           Image#6.jpg   Image#61.jpg      Image#62.jpg    Image#63.jpg   Image#64.jpg
Cat2           Image#5.jpg   Image#51316.jpg   Image#5136.jpg  Image#516.jpg  Image#56.jpg
以下查询应该可以做到这一点:

WITH CategoryCTE AS (
    SELECT 
        BookName,
        ROW_NUMBER() OVER (
            PARTITION BY CategoryName
            ORDER BY CategoryName DESC, BookName
        ) AS CTE_Order
    FROM BookMaster    
)

SELECT CategoryName, [1] AS Book1, [2] AS Book2, [3] AS Book3, [4] AS Book4, [5] AS Book5
FROM 
(SELECT bm.BookImage, cm.CategoryName, c.CTE_Order FROM 
    CategoryCTE c
    INNER JOIN BookMaster bm ON c.BookName = bm.BookName
    INNER JOIN CategoryMaster cm ON bm.CategoryName = cm.Oid
    INNER JOIN SubCategoryMaster scm ON bm.SubCategoryName = scm.Oid
WHERE c.CTE_Order < 6
GROUP BY cm.CategoryName, bm.BookImage, c.CTE_Order
) Sub
PIVOT (MAX(BookImage) FOR CTE_Order IN ([1],[2],[3], [4],[5])) AS PivotTable

能否添加一个要在SQL中生成的结果集示例?理想情况下,sqlfiddle处理数据和结构:我上面给出的查询会给出类似结果的结果。如果查询给了我正确的输出,我的问题是如何在表面板布局中显示它