SQL Server 2008上でDotNetNukeを使用しています。次のコードがNULL値を返す場合、何も返さないようにしています。空の行は必要ありません。「null」は必要ありません。絶対に何も必要ありません。これも可能ですか?COALESCEを使用してみましたが、何かが足りないか、この目的を意図したものではありません。
DECLARE @Category table (Category varchar(15), Deleted bit)
INSERT INTO @Category (Category, Deleted)
SELECT 'Benefits', 0
UNION ALL
SELECT 'UR', 0
UNION ALL
SELECT 'Events', 1
DECLARE @Staff Table (DNNUserID int, InternalStaff bit,
Deleted bit, InactiveStaff bit)
INSERT INTO @Staff (DNNUserID, InternalStaff, Deleted, InactiveStaff)
SELECT '556', 1, 0, 0
UNION ALL
SELECT '423', 0, 0, 0
UNION ALL
SELECT '111', 1, 0, 1
UNION ALL
SELECT '222', 1, 1, 0
SELECT Category FROM @Category WHERE Deleted = 0
UNION ALL
SELECT CASE WHEN '111' IN
(SELECT DnnUserID FROM @Staff WHERE Deleted = 0 AND
InactiveStaff = 0 AND InternalStaff = 1)
THEN 'Internal Use Only'
ELSE NULL END
変数テーブルは、使いやすさのためにここにあります。実際に操作する必要がある、ほぼ同じ名前の2つの実際のテーブルがあります。
ストアドプロシージャを使用してこれらのアクションを実行することはできません。使用しているtelerikコントロールがそれを理解できるように、単純なselectステートメントまたはスカラーUDFである必要があります。
DNNの実際のバックグラウンドに直接アクセスすることはできず(したがって、DNNまたはTelerikのコードを編集することはできません)、サーバーだけにアクセスでき、プライマリDNNWebインターフェイスを介してのみTelerikコントロールにselectステートメントを追加できます。
個人が私が働いている会社の内部メンバーである場合、カテゴリテーブルのメインリストに加えて、ドロップダウンに「内部使用のみ」というエントリが表示されるという考え方です。他の誰かがそれを使用する場合、たとえば、クライアントのスタッフの1人は、カテゴリのリストのみを表示します。
これは実行可能ですか?ライブシステムでテストする方法がないため、現時点では機能を使用しないようにしています(今日は自宅で作業しており、VPNがダウンしています)が、必要に応じて自宅でテストできます。上記のSQLを使用したデータベース。
編集
これを関数で大まかに使用できます。
DECLARE @DNNUserID int = 111
DECLARE @Category table (Category varchar(15), Deleted bit)
INSERT INTO @Category (Category, Deleted)
SELECT 'Benefits', 0
UNION ALL
SELECT 'UR', 0
UNION ALL
SELECT 'Events', 1
DECLARE @Staff Table (DNNUserID int, InternalStaff bit, Deleted bit,
InactiveStaff bit)
INSERT INTO @Staff (DNNUserID, InternalStaff, Deleted, InactiveStaff)
SELECT '556', 1, 0, 0
UNION ALL
SELECT '423', 0, 0, 0
UNION ALL
SELECT '111', 1, 0, 1
UNION ALL
SELECT '222', 1, 1, 0
IF @DNNUserID NOT IN (SELECT DnnUserID FROM @Staff WHERE Deleted = 0
AND InactiveStaff = 0 AND InternalStaff = 1)
BEGIN
SELECT Category FROM @Category WHERE Deleted = 0
END
IF @DNNUserID IN (SELECT DnnUserID FROM @Staff WHERE Deleted = 0
AND InactiveStaff = 0 AND InternalStaff = 1)
BEGIN
SELECT Category FROM @Category WHERE Deleted = 0
UNION ALL
SELECT 'Internal Use Only'
END
だが!関数に頼らずにこれを行う方法を見つけたいのですが、これは可能ですか?