0
我目前有一個電子郵件類別的列表,我列出了人,他們選擇了哪些類別。動態樞軸上有子類別的類別
我現在有一個要求,每個電子郵件分類可能可能有一個分配給其鏈接到該類別中的一個類型的ID。
例如稱爲父電子郵件類別可能對鏈接到一類表中特定類ID列。 所以我現在需要列出所選擇的類別以及「子類別」。
我的表類似於如下
Name CategoryName ClassId
Test1 Parent 23 //23 is reception class
Test1 General Null
Test2 Parent Null
Test3 Committee Null
Test3 Parent 24 // 24 is year 1
我想要些什麼是
Name | Parent | Parent-Reception | Parent-Year1 | Committee | General
Test1 | 1 | 1 | 0 | 0 | 1
Test2 | 1 | 0 | 0 | 0 | 0
Test3 | 1 | 0 | 1 | 1 | 0
我使用下面的SQL只類別沒有鏈接類得到它。
DECLARE @colsSelect AS NVARCHAR(MAX),
@cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX);
SET @colsSelect = STUFF((SELECT distinct ', ISNULL(' + QUOTENAME(c.CategoryName) + ',0) AS ' + QUOTENAME(c.CategoryName)
FROM dbo.EmailCategory c
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.CategoryName)
FROM dbo.EmailCategory c
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT FirstName, LastName, Email, ' + @colsSelect + ' from
(
SELECT DISTINCT
dbo.[User].Name,
dbo.EmailCategory.CategoryName,
1 as assigned
FROM dbo.[User] INNER JOIN
dbo.EmailPreferences ON dbo.[User].ID = dbo.EmailPreferences.UserID LEFT OUTER JOIN
dbo.EmailCategory ON dbo.EmailPreferences.EmailCategoryID = dbo.EmailCategory.ID
WHERE
(dbo.[User].Email <> '''') AND (dbo.[User].Email IS NOT NULL) ) x
pivot
(
max(assigned)
for CategoryName in (' + @cols + ')
) p '
execute(@query)
這甚至有可能使用這種類型的SQL?
爲什麼你想'Test3'有一個'Parent'值爲零? –
對不起,錯字。現在更新。 – Bex