0

2つのテーブルからクエリを作成しようとしています。

最初のテーブルは「ドキュメントタイプ」で、2番目のテーブルは「ドキュメント」です。カテゴリが必要な場合は「ドキュメントタイプ」で、「ドキュメント」にはドキュメント自体の詳細が含まれます。それらは関連しています(つまり、「ドキュメント」には「ドキュメントタイプ」のキーフィールドに関連するフィールドが含まれています)。

簡略化すると、テーブルは次のようになります。-

Document Type
=============
TypeID
TypeName
TypeDescription


Document
========
DocumentID
DocumentType (fk of TypeID)
DocumentRequired

私が実行しているクエリは、ドキュメントタイプのDISTINCTリストを取得します。これは最初の最も簡単なビットです。

私がやりたいのは、クエリに列を追加して「Document」の下を検索し、「DocumentRequired」がTRUEに等しい関連ドキュメントがある場合は、TRUE/Yes値を表示することです。そうでない場合は、FALSE/Noを表示します。

結合を作成しようとしましたが、必須/非必須の両方のドキュメントを含むカテゴリがある場合は、重複します。私が欲しいのはyes/noフラグだけです。

誰かが助けることができますか?

4

4 に答える 4

1
SELECT dt.TypeID,dt.TypeName,dt.TypeDescription,
    CASE
        WHEN sum(CONVERT(int,ISNULL(d.DocumentRequired,0)))=0 THEN 'False/No'
        ELSE 'True/Yes'
    END [Any required documents]
FROM DocumentType dt
LEFT JOIN Document d on dt.DocumentType=dt.TypeID --terrible naming convention....
group by dt.TypeID,dt.TypeName,dt.TypeDescription
于 2012-10-16T14:58:31.987 に答える
0
Select DISTINCT TypeID, 
                TypeName, 
                TypeDescription, 
                CASE WHEN 
                    (select count(*) 
                            from Document 
                            where document.DocumentType = DocumentType.TypeID 
                            and DocumentRequired = 'TRUE'
                    )>0 
                    THEN 'YES' 
                    ELSE 'NO' 
                END AS myYesNoField 
    FROM DocumentType
于 2012-10-16T14:59:22.810 に答える
0
SELECT
    TypeID,
    TypeName,
    TypeDescription,
    CASE WHEN NumRequiredDocuments > 0 THEN 'Yes' ELSE 'No' END RequiredDocumentsExist
FROM
(
    SELECT
        DocumentType.TypeID,
        DocumentType.TypeName,
        DocumentType.TypeDescription,
        SUM (CASE WHEN Document.Required <> 0 THEN 1 ELSE 0 END) NumRequiredDocuments
    FROM
        DocumentType
        LEFT JOIN Document ON DocumentType.TypeID = Document.DocumentType
)
GROUP BY
    TypeID,
    TypeName,
    TypeDescription
于 2012-10-16T14:59:32.587 に答える
0

テーブルに次のレコードがあるとします 。DocumentType

TypeID  TypeName    TypeDescription
1   Type1   1st Type
2   Type2   2nd Type
3   Type 3  3rd Type

およびドキュメント

DocumentId  DocumentType    DocumentRequired
1       1       0
2       1       1
3       2       0
4       3       1

次に、次の選択により、必要なものが得られます。

SELECT  TypeID, 
        TypeName, 
        TypeDescription, 
        CASE 
            WHEN EXISTS 
                (SELECT * 
                FROM Document 
                WHERE Document.DocumentType = TypeID 
                    AND DocumentRequired = 1) THEN 'True'
            ELSE 'False'
        END AS DocumentRequired
FROM DocumentType
于 2012-10-16T15:13:32.477 に答える