私はこれらのステートメントに参加しようとしています:
select min(len(Password)) as min,
max(len(Password)) as max,
avg(len(Password)) as avg
FROM Customer.dbo.Password
UNION ALL
select min(len(password2)) as min,
max(len(password2)) as max,
avg(len(password2)) as avg
FROM website.dbo.password2
これらに:
SELECT c.name COLLATE SQL_Latin1_General_CP1_CI_AS colName, o.name COLLATE SQL_Latin1_General_CP1_CI_AS tableName, 'website' db FROM website.sys.all_columns as c INNER JOIN website.sys.all_objects o ON c.object_id = o.object_id WHERE c.name like '%password%' AND type = 'U'
UNION
SELECT c.name COLLATE SQL_Latin1_General_CP1_CI_AS colName, o.name COLLATE SQL_Latin1_General_CP1_CI_AS tableName, 'Customer' db FROM Customer.sys.all_columns as c INNER JOIN Customer.sys.all_objects o ON c.object_id = o.object_id WHERE c.name like '%password%' AND type = 'U'
共通の列はありません。最初の 2 つの SELECT ステートメントは、パスワードの長さの最小値、最大値、および平均値の 3 つの列を生成し、次の 2 つの列は、パスワードが保持されている場所の colName、tableName、およびデータベース名を生成します。
純粋に視覚的な理由から、両方の結果セットを 1 つのテーブルに表示して、対応する最小値、最大値、平均値を適切な colName、tableName、および db に取得したいと考えています。
私はこのようにしてみました:
DECLARE @numberTable TABLE (link nvarchar(500), max int, min int, avg int)
INSERT INTO @numberTable
select 'link', min(len(Password)) as min,
max(len(Password)) as max,
avg(len(Password)) as avg
FROM Customer.dbo.Password UNION ALL
select 'link', min(len(password2)) as min,
max(len(password2)) as max,
avg(len(password2)) as avg
FROM website.dbo.password2
SELECT * FROM @numberTable ORDER BY max
DECLARE @myTable TABLE (link nvarchar(500), colName nvarchar(500), tableName nvarchar(500), db nvarchar(500))
INSERT INTO @myTable
SELECT 'link', c.name COLLATE SQL_Latin1_General_CP1_CI_AS colName, o.name COLLATE SQL_Latin1_General_CP1_CI_AS tableName, 'website' db FROM website.sys.all_columns as c INNER JOIN website.sys.all_objects o ON c.object_id = o.object_id WHERE c.name like '%password%' AND type = 'U' UNION
SELECT 'link', c.name COLLATE SQL_Latin1_General_CP1_CI_AS colName, o.name COLLATE SQL_Latin1_General_CP1_CI_AS tableName, 'Customer' db FROM Customer.sys.all_columns as c INNER JOIN Customer.sys.all_objects o ON c.object_id = o.object_id WHERE c.name like '%password%' AND type = 'U'
SELECT * FROM @myTable ORDER BY db
SELECT link
FROM @myTable
LEFT OUTER JOIN @numberTable
ON @myTable.link = @numberTable.link
残念ながら、これはうまくいきませんでした。
Microsoft SQL Server 2008 を使用しています。
私が求めていることが理にかなっていることを願っています。