0

投稿が修正されました!!!....

次のような WHERE 条件についてサポートが必要です。

ID#1は技術部所属。

ID#2は営業部所属

ID# 3 は、その他の部門に属しています。

ID# 4 は Eng-Level2 部門に属します

ID# 5 は Eng-Level3 部門に属します

ID# 6 は Eng-Level4 部門に属します

私が達成しようとしているのは、ID# 1 のログがこのレポートを実行すると、アクティビティが彼 (ID# 1) に属し、Eng-Levelx (ID#4、ID#5、および ID#6) に属していることを示すことです。ただし、ID が別の部門 (ID# 2 & 3) に属している場合は、以下のアクティビティのみが表示されます。

ここに私の非動作クエリがあります:

SELECT * FROM dbo.CRM_Activity
WHERE 
(ActivityOwnerID = 1579
AND [Status] = 'Open'
AND Status <> 'Deleted')
OR
    ActivityOwnerID IN (
        SELECT COALESCE(
            (SELECT Tech_ID FROM dbo.employee WHERE tech_ID = 1579 and POSITION = 'Engineering')
            ,  (SELECT Tech_ID FROM dbo.employee WHERE LEFT(first_name, 4) = 'Eng-')  --- THIS ONE FAILED BECAUSE IT RETURNS MULTIPLE RECORDS
        )
    )
    AND [Status] = 'Open'

ORDER BY CreatedDate DESC
4

2 に答える 2

1

代わりに使用できるため、両方のクエリからUNION一意のリストが取得されます。Tech_ID

SELECT * FROM dbo.CRM_Activity
WHERE 
    ActivityOwnerID IN (

            SELECT Tech_ID FROM dbo.employee WHERE tech_ID = 1579 and POSITION = 'Engineering'
            UNION
            SELECT Tech_ID FROM dbo.employee WHERE LEFT(first_name, 4) = 'Eng-'
        )
于 2013-09-25T20:28:09.233 に答える
0

あなたの場合、複数の値が許可されてSELECT COALESCE(....いるため、複数の値を返すことができますが、式(結果セットではない)が必要なため、またはその結果は1つでなければなりません。INSELECT Tech_ID FROM dbo.employee WHERE tech_ID = 1579 and POSITION = 'Engineering'COALESCE

于 2013-09-25T20:30:42.080 に答える