1

次のような簡単なテーブルがあります

CREATE TABLE [accounting].[ExtractControl](
    [SourceSchema] [varchar](50) NOT NULL,
    [SourceTable] [varchar](150) NOT NULL,
    [SourceDatabase] [varchar](50) NOT NULL)

SourceSchemaSourceTable の値を使用してSourceDatabaseを選択したい

現在、次のように複数のクエリを実行しています

Select @s1 = SourceDatabase from accounting.ExtractControl where SourceSchema = 'xxx' and SourceTable = 'xxx'
Select @s2 = SourceDatabase from accounting.ExtractControl where SourceSchema = 'yyy' and SourceTable = 'yyy'
Select @s3 = SourceDatabase from accounting.ExtractControl where SourceSchema = 'xxx' and SourceTable = 'yyy'

これはもっとエレガントな方法でできると信じています!助けてくれてありがとう!

4

4 に答える 4

1

1 つのクエリでのオプション

SELECT @s1 = MAX(CASE WHEN SourceSchema = 'xxx' and SourceTable = 'xxx' THEN SourceDatabase END),
       @s2 = MAX(CASE WHEN SourceSchema = 'yyy' and SourceTable = 'yyy' THEN SourceDatabase END),
       @s3 = MAX(CASE WHEN SourceSchema = 'xxx' and SourceTable = 'yyy' THEN SourceDatabase END)
FROM accounting.ExtractControl

SQL Fiddleのデモ

于 2012-12-14T10:20:07.860 に答える
1

このようなことを求めていますか?

select SourceDatabase from accounting.ExtractControl
where SourceSchema in ('xxx', 'yyy') and SourceTable in ('xxx', 'yyy');

これは、が 'xxx' または 'yyy' であり、 が 'xxx' または 'yyy'であるSourceDatabase場所を返します。SourceSchemaSourceTable

于 2012-12-13T10:37:14.737 に答える
0
select * from accounting.ExtractControl
where SourceSchema = 'xxx' or SourceSchema = 'yyy'
于 2012-12-13T10:40:07.837 に答える
0

このクエリはどうですか...

select SourceDatabase
from accounting.ExtractControl
where SourceSchema in ('xxx', 'yyy')
      and SourceTable in ('xxx', 'yyy')
      and SourceTable = SourceSchema

私はこれを試しませんでしたが、これはあなたが必要としたものだと思います

于 2012-12-14T10:34:27.110 に答える