1

UNION ですべての結果を 1 つの結果セットに取得したい USE ステートメントがいくつかありますが、UNION は SELECT でのみ使用できるため、これを行うことはできません。私の目標を別の方法で達成するための回避策や方法はありますか?

例:

USE Customer 
select min(len(Password)) as min, 
    max(len(Password)) as max, 
    avg(len(Password)) as avg 
FROM Password
USE website 
select min(len(password)) as min, 
    max(len(password)) as max, 
    avg(len(password)) as avg 
FROM Password

さまざまなデータベースとテーブルを使用するこれらのステートメントが他にもたくさんあるので、それらをすべてグループ化したいと思いました。

Microsoft SQL Server 2008 を使用しています。

4

3 に答える 3

2

USEステートメントを使用しないでください。オブジェクト (テーブル、ビューなど) に完全修飾名を使用する

SELECT
    min(len(Password)) AS minPassword, 
    max(len(Password)) AS maxPassword, 
    avg(len(Password)) AS avgPasswword 
FROM 
    Customer.dbo.Password
UNION
select 
    min(len(password)), 
    max(len(password)), 
    avg(len(password))
FROM 
    Website.dbo.Password

これは、テーブルの所有者として dbo があることを前提としています。

于 2012-10-08T10:31:21.043 に答える
1

[database name].[schema name].[table name]次のUNIONようにを使用して、テーブル名を修飾できます。

select min(len(Password)) as min, 
    max(len(Password)) as max, 
    avg(len(Password)) as avg 
FROM customer.schemaname.Password
UNION ALL 
select min(len(password)) as min, 
    max(len(password)) as max, 
    avg(len(password)) as avg 
FROM website.schemaname.Password
于 2012-10-08T10:31:22.867 に答える
0

使用するデータベースをテーブル名の前に付けてから、 a を使用UNION ALLして同時にクエリを実行できます。

select min(len(Password)) as min, 
    max(len(Password)) as max, 
    avg(len(Password)) as avg 
FROM Customer.yourSchema.Password
UNION ALL
select min(len(password)) as min, 
    max(len(password)) as max, 
    avg(len(password)) as avg 
FROM website.yourSchema.Password

呼び出し時の構造は次のようになります。

yourDataBase.yourSchemaName.yourTableName
于 2012-10-08T10:32:18.453 に答える