0

select case ステートメントを使用して 2 つの列を比較しています。1 つの値はテーブル値関数から返され、もう 1 つはデータベース列です。Preferred First Name の最初の値が null の場合、ビューから FirstName の値をエイリアス列として表示する必要があります。私の構文が正しいかどうかはわかりません。これが正しいかどうか、またはそれを行うためのより良い方法を誰かに教えてもらえますか?

(SELECT 
     CASE WHEN (
        Select ASSTRING
        FROM dbo.GetCustomFieldValue('Preferred First Name', view_Attendance_Employees.FileKey)
     ) = NULL 
 THEN view_Attendance_Employees.FirstName
    ELSE (
        Select ASSTRING
       FROM dbo.GetCustomFieldValue('Preferred First Name', view_Attendance_Employees.FileKey))
   END) as FirstName,
4

3 に答える 3

1

と比較するときはIS NULL代わりに を使用する必要があります。= NULLNULL

しかし、あなたの場合、次のISNULLように使用する必要があります。

SELECT
    ISNULL(
        SELECT ASSTRING
        FROM dbo.GetCustomFieldValue('Preferred First Name', view_Attendance_Employees.FileKey),
        view_Attendance_Employees.FirstName
    ) AS FirstName,
...
于 2013-08-15T14:35:03.483 に答える
1

私があなたのコードを正しく読んでいれば、これは少しクリーンな方法かもしれません。

WITH CTE 
AS
(
    SELECT 
        FirstName
    ,   AsString = ( Select ASSTRING FROM dbo.GetCustomFieldValue('Preferred First Name', X.FileKey) )
    FROM view_Attendance_Employees X
)

SELECT FirstName = ISNULL(AsString,FirstName)
FROM CTE
于 2013-08-15T14:40:27.933 に答える