--Create/Populate [#Filters]:
if object_id('tempdb..[#Filters]','U') is not null drop table [#Filters]
go
create table [#Filters]
(
[filterid] int
,[filtertype] varchar(50)
,[filtername] varchar(50)
,[filtercriteria] nvcarchar(max)
)
go
set nocount on
insert [#Filters] select 1, 'Worklist', 'WL1', 'ID_SlotAssignmentFolder=1'
insert [#Filters] select 2, 'Worklist', 'WL2', 'ID_SlotAssignmentFolder=2'
insert [#Filters] select 3, 'Worklist', 'WL3', 'ID_SlotAssignmentFolder=3'
insert [#Filters] select 4, 'Filter', 'Filter1', 'filter_after_hours_offset=0,time_of_day_begin=00:00,worklistKey=1'
insert [#Filters] select 5, 'Filter', 'Filter2', 'filter_after_hours_offset=0,time_of_day_begin=00:00,worklistKey=1,worklistKey=2'
insert [#Filters] select 6, 'Filter', 'Filter3', 'filter_after_hours_offset=0,time_of_day_begin=00:00,worklistKey=2'
go
--select * from [#Filters]
私はこのテーブルを作成しませんでした。カンマ区切りのカンマで区切られた
私はフィルタと呼ばれるテーブルを持っています。フィルタとワークリストの2種類があります。フィルタは 'filtercriteria'列のワークリストを参照します。
上記の例では、Filter1はWL1、Filter2参照WL1およびWL2、およびFilter3参照WL2を参照しています。
すべてのワークリストが参照されていることを確認するために、フィルタを検索するクエリが必要です。たとえば、WL3がいずれのフィルタでも参照されていないため、上記のテーブルを検索してWL3を返すことができるようにします。
filtercriteriaの列には他の情報がありますので、worklistKey情報以外のすべてを削除する方法はわかりません。返された場合、どのフィルタでも参照されていないワークリストを検索します。 SQL Serverでの
フィルタタイプが 'フィルタ'の場所を選択し、 'worklistkey ='の横にあるすべての数字を確認する必要があります。次に、それらの番号の明確なリストを取り出し、filetypeが 'worklist'であるfilternameの 'WL'の隣に表示される数字と比較します。 –
正しい。フィルタには、多くのworklistKey参照を含めることができます。 – Pryach
worklistkeysは、あなたの例のように常にfilteridを参照していますか?つまり、 'worklistKey = 2'と表示されますが、実際には 'filterid = 2'を意味していますか? –