[英]Not able to use Boolean as datatype in C# as a replacement to Bit datatype of SQL Server
[英]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;
查詢中的StatusId
是bit
數據類型列。
我的問題是,如何在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.