1

次のUnionクエリを作成しました。これは、ほとんどの場合正常に機能します。

SELECT [%$##@_Alias].[Contact ID], [%$##@_Alias].[Mailing Name]
FROM (SELECT [Referrals - Contacts Within Organisations].[Contact ID], [Referrals - Contacts Within Organisations].[Mailing Name],  [Referrals - Contacts Within Organisations].[Surname], [Referrals - Contacts Within Organisations].[First name]
FROM [Referrals - Contacts Within Organisations]
UNION SELECT "0" as [Contact ID], "View all contacts" as [Mailing Name], "0" as [Surname], "0" as [First name]
FROM [Referrals - Contacts Within Organisations])  AS [%$##@_Alias]
ORDER BY [%$##@_Alias].Surname, [%$##@_Alias].[First name];

これにより、クエリが返すものの先頭に「すべての連絡先を表示」の最初の行が追加されます。

ただし、その「実際の」クエリ部分が結果を返さない場合、クエリ全体は結果を返しませんが、最初の行は常に表示されます。

これは可能ですか?もしそうなら、私は何を間違っていますか?ありがとう。

編集:あなたの助けをありがとう。この種のものを必要とする他の人の参照のために、最終的な作業クエリを以下に示します。

SELECT A.[Contact ID], A.[Mailing Name]
FROM (SELECT "0" as [Contact ID], "View all contacts" as [Mailing Name], "0" as [Surname], "0" as [First name]
FROM [Dummy] 
UNION
SELECT [Referrals - Contacts Within Organisations].[Contact ID], [Referrals - Contacts Within Organisations].[Mailing Name],  [Referrals - Contacts Within Organisations].[Surname], [Referrals - Contacts Within Organisations].[First name]
FROM [Referrals - Contacts Within Organisations]) AS A
ORDER BY A.Surname, A.[First name];
4

1 に答える 1

1

SQLでデータを含む1つの行を常に返すには、手動で値を指定する場合でも、少なくとも1つの行があるテーブルから選択する必要があります。ランダムな情報の1つのフィールドを持つtblDummyを使用することをお勧めします。

例えば:

SELECT "Hello", "Goodbye"
FROM tblDummy

補足として、私はまた、以下を取り除こうとします:

[%$##@_Alias]

これは、次を追加して派生テーブルのエイリアスを作成することで実現できます。

(SELECT * FROM Blah) AS A

たとえば、派生テーブルにAという名前を付けます

于 2012-11-30T08:46:42.520 に答える