簡體   English   中英

C#-SQL Server中的位數據類型上的PIVOT並將結果分配給datagridview

[英]C# - PIVOT on a Bit datatype in SQL Server & assign result to datagridview

我在SQL Server中編寫了此查詢,該查詢給出了下圖所示的輸出。

我想要復選框列而不是零。

set @str =  STUFF ((Select ',' + QUOTENAME(CategoryName)
    From dbo.Master_ItemCategoryMaster
     FOR XML PATH(''), TYPE
                ).value('.', 'NVARCHAR(MAX)') 
            ,1,1,'')

Print @str

set @query = N'Select [PlaceId],[PlaceName],' +@str +N'
               From
                   (Select ID as [PlaceId], CommonName as [PlaceName],(cast (ISNULL(PC.StatusId, 0) as tinyint)) as [StatusId],IC.CategoryName
                    From dbo.Master_CommonMaster CM 

        CROSS JOIN dbo.Master_ItemCategoryMaster IC 
        LEFT OUTER JOIN dbo.Master_PlaceWiseCategory PC ON PC.PlaceId = CM.ID 
            AND PC.CategoryId = IC.CatID
        Where CM.TypeId = 2 and IC.ItemGroup ! = 101

    )AS M
    PIVOT
    (   
        MAX([StatusId]) For CategoryName IN ('+@str+N')
    )as P           
    '
     exec sp_executesql @query;

查詢中的StatusIdbit數據類型列。

在此處輸入圖片說明

我的問題是,如何在SQL Server中對bit數據類型進行PIVOT並將結果分配給datagridview(“位”列用作復選框)?

    declare @str as varchar(MAX)
declare @str1 as varchar(MAX)

    declare @query as nvarchar(MAX)

    set @str =  STUFF ((Select ',' + QUOTENAME(CategoryName)
    From dbo.Master_ItemCategoryMaster
     FOR XML PATH(''), TYPE
                ).value('.', 'NVARCHAR(MAX)') 
            ,1,1,'')




set @str1 =  STUFF ((Select ',' + 'cast('+ QUOTENAME(CategoryName)
+' as bit) as ' + QUOTENAME(CategoryName)
        From dbo.Master_ItemCategoryMaster
     FOR XML PATH(''), TYPE
                ).value('.', 'NVARCHAR(MAX)') 
            ,1,1,'')


    Print @str

    set @query = N' 
    Select [PlaceId],[PlaceName],' +@str1 +N'
    From
    (   
        Select ID as [PlaceId], CommonName as [PlaceName],(cast (ISNULL(PC.StatusId, 0) as tinyint)) as [Select],IC.CategoryName
        From dbo.Master_CommonMaster CM 

        CROSS JOIN dbo.Master_ItemCategoryMaster IC 
        LEFT OUTER JOIN dbo.Master_PlaceWiseCategory PC ON PC.PlaceId = CM.ID 
            AND PC.CategoryId = IC.CatID
        Where CM.TypeId = 2 and IC.ItemGroup ! = 101

    )AS M
    PIVOT
    (   
        MAX([Select]) For CategoryName IN ('+@str+N')
    )as P           
    '
     exec sp_executesql @query;

字符串@ str1(動態列列表)用作列列表,其中列按Bit強制轉換,而@str在Pivot中使用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM