Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > Помогите пожалуйсто объеденить запросы


Автор: mauar 18.8.2011, 10:02
Помогите пожалуйсто объеденить между собой запросы

Есть запрос 1:

 
Код

   Select   RupayUser.RupayUserId, dbo.RupayUser.BirthDate
    From dbo.RupayUser
    inner join dbo.Account
     on dbo.Account.AccountId = RupayUser.RupayUserId  




Есть запрос 2:

Код

Select top 100 * from (select Account.AccountId
    ,Account.AmountCurrency
    ,Account.CreationDate
    ,legal_LegalEntity.Name
    ,legal_LegalEntity.FullName
    ,legal_LegalEntity.Fax
    ,legal_LegalEntity.Phone
    ,legal_LegalEntity.SiteUrl
    ,legal_LegalEntity.Inn
    ,legal_LegalEntity.Kpp
    ,legal_LegalEntity.LegalAddress
    ,legal_LegalEntity.MobilePhone
    ,legal_LegalEntity.Ogrn
    ,legal_LegalEntity.Okpo
    ,legal_Contract.ContractId
    ,legal_Contract.ContractNumber
    ,legal_Contract.ContractDate
    ,legal_LegalEntity.BankId
    ,legal_LegalEntity.SettleAccount
    ,legal_Bank.NEWNUM
    ,legal_Bank.KSNP
    ,legal_LegalEntity.LegalAddress as LegalAddressYurik 
    ,legal_LegalEntity.RealAddress as RealAddressYurik
    ,legal_LegalEntity.LegalEntityId
    ,fizik_goga = case when legal_LegalEntity.LegalEntityId is not NULL then 'yurik'
    else 'fizik' 
    end
    , organization = case when Account.CompanyTransferDate is null then 'RM'
    else 'DP'
    end
    from Account
    inner join acc_RupayAccount on Account.AccountId = acc_RupayAccount.RupayAccountId
    left join dbo.RupayUser on RupayUser.RupayUserId = acc_RupayAccount.RupayUserId
    left join dbo.legal_LegalEntity on legal_LegalEntity.RupayUserId = RupayUser.RupayUserId
    left join dbo.legal_Contract on legal_LegalEntity.ContractId = legal_Contract.ContractId
    left join dbo.legal_Bank on legal_Bank.BankId = legal_LegalEntity.BankId
    union all
    -- СКО
    select Account.AccountId
    ,Account.AmountCurrency
    ,Account.CreationDate
    ,'' as Name
    ,'' as FullName
    ,'' as Fax
    ,'' as Phone
    ,'' as SiteUrl
    ,'' as Inn
    ,'' as Kpp
    ,'' as LegalAddress
    ,'' as MobilePhone
    ,'' as Ogrn
    ,'' as Okpo
    ,'' as ContractId
    ,'' as ContractNumber
    ,'' as ContractDate
    ,'' as BankId
    ,'' AS SettleAccount
    ,'' AS NEWNUM
    ,'' as KSNP
    ,'' as LegalAddressYurik 
    ,'' as RealAddressYurik
    ,'' as LegalEntityId
    ,'SKO' as fizik_goga
    , organization = case when Account.CompanyTransferDate is null then 'RM'
    else 'DP'
    end
    from Account
    inner join dbo.acc_InvoiceAccount on dbo.acc_InvoiceAccount.InvoiceAccountId = Account.AccountId    ) as Tab 



а если вместе сделать вот так:

Код

Select top 100 * from (select Account.AccountId
    ,Account.AmountCurrency
    ,Account.CreationDate
    ,legal_LegalEntity.Name
    ,legal_LegalEntity.FullName
    ,legal_LegalEntity.Fax
    ,legal_LegalEntity.Phone
    ,legal_LegalEntity.SiteUrl
    ,legal_LegalEntity.Inn
    ,legal_LegalEntity.Kpp
    ,legal_LegalEntity.LegalAddress
    ,legal_LegalEntity.MobilePhone
    ,legal_LegalEntity.Ogrn
    ,legal_LegalEntity.Okpo
    ,legal_Contract.ContractId
    ,legal_Contract.ContractNumber
    ,legal_Contract.ContractDate
    ,legal_LegalEntity.BankId
    ,legal_LegalEntity.SettleAccount
    ,legal_Bank.NEWNUM
    ,legal_Bank.KSNP
    ,legal_LegalEntity.LegalAddress as LegalAddressYurik 
    ,legal_LegalEntity.RealAddress as RealAddressYurik
    ,legal_LegalEntity.LegalEntityId
    ,fizik_goga = case when legal_LegalEntity.LegalEntityId is not NULL then 'yurik'
    else 'fizik' 
    end
    , organization = case when Account.CompanyTransferDate is null then 'RM'
    else 'DP'
    end
    from Account
    inner join acc_RupayAccount on Account.AccountId = acc_RupayAccount.RupayAccountId
    left join dbo.RupayUser on RupayUser.RupayUserId = acc_RupayAccount.RupayUserId
    left join dbo.legal_LegalEntity on legal_LegalEntity.RupayUserId = RupayUser.RupayUserId
    left join dbo.legal_Contract on legal_LegalEntity.ContractId = legal_Contract.ContractId
    left join dbo.legal_Bank on legal_Bank.BankId = legal_LegalEntity.BankId
    union all
    -- СКО
    select Account.AccountId
    ,Account.AmountCurrency
    ,Account.CreationDate
    ,'' as Name
    ,'' as FullName
    ,'' as Fax
    ,'' as Phone
    ,'' as SiteUrl
    ,'' as Inn
    ,'' as Kpp
    ,'' as LegalAddress
    ,'' as MobilePhone
    ,'' as Ogrn
    ,'' as Okpo
    ,'' as ContractId
    ,'' as ContractNumber
    ,'' as ContractDate
    ,'' as BankId
    ,'' AS SettleAccount
    ,'' AS NEWNUM
    ,'' as KSNP
    ,'' as LegalAddressYurik 
    ,'' as RealAddressYurik
    ,'' as LegalEntityId
    ,'SKO' as fizik_goga
    , organization = case when Account.CompanyTransferDate is null then 'RM'
    else 'DP'
    end
    from Account
    inner join dbo.acc_InvoiceAccount on dbo.acc_InvoiceAccount.InvoiceAccountId = Account.AccountId    
   
    Select   RupayUser.RupayUserId, dbo.RupayUser.BirthDate
    From dbo.RupayUser
    inner join dbo.Account
     on dbo.Account.AccountId = RupayUser.RupayUserId  ) as Tab 


ругается матом, по раздельности всё работает ))


делал так: 

Код

Select top 1000 * from (select Account.AccountId
    ,Account.AmountCurrency
    ,Account.CreationDate
    ,legal_LegalEntity.Name
    ,legal_LegalEntity.FullName
    ,legal_LegalEntity.Fax
    ,legal_LegalEntity.Phone
    ,legal_LegalEntity.SiteUrl
    ,legal_LegalEntity.Inn
    ,legal_LegalEntity.Kpp
    ,legal_LegalEntity.LegalAddress
    ,legal_LegalEntity.MobilePhone
    ,legal_LegalEntity.Ogrn
    ,legal_LegalEntity.Okpo
    ,legal_Contract.ContractId
    ,legal_Contract.ContractNumber
    ,legal_Contract.ContractDate
    ,legal_LegalEntity.BankId
    ,legal_LegalEntity.SettleAccount
    ,legal_Bank.NEWNUM
    ,legal_Bank.KSNP
    ,legal_LegalEntity.LegalAddress as LegalAddressYurik 
    ,legal_LegalEntity.RealAddress as RealAddressYurik
    ,legal_LegalEntity.LegalEntityId
    ,fizik_goga = case when legal_LegalEntity.LegalEntityId is not NULL then 'yurik'
    else 'fizik' 
    end
    , organization = case when Account.CompanyTransferDate is null then 'RM'
    else 'DP'
    end
    from Account
    inner join acc_RupayAccount on Account.AccountId = acc_RupayAccount.RupayAccountId
    left join dbo.RupayUser on RupayUser.RupayUserId = acc_RupayAccount.RupayUserId
    left join dbo.legal_LegalEntity on legal_LegalEntity.RupayUserId = RupayUser.RupayUserId
    left join dbo.legal_Contract on legal_LegalEntity.ContractId = legal_Contract.ContractId
    left join dbo.legal_Bank on legal_Bank.BankId = legal_LegalEntity.BankId
    union all
    -- СКО
    select Account.AccountId
    ,Account.AmountCurrency
    ,Account.CreationDate
    ,'' as Name
    ,'' as FullName
    ,'' as Fax
    ,'' as Phone
    ,'' as SiteUrl
    ,'' as Inn
    ,'' as Kpp
    ,'' as LegalAddress
    ,'' as MobilePhone
    ,'' as Ogrn
    ,'' as Okpo
    ,'' as ContractId
    ,'' as ContractNumber
    ,'' as ContractDate
    ,'' as BankId
    ,'' AS SettleAccount
    ,'' AS NEWNUM
    ,'' as KSNP
    ,'' as LegalAddressYurik 
    ,'' as RealAddressYurik
    ,'' as LegalEntityId
    ,'SKO' as fizik_goga
    , organization = case when Account.CompanyTransferDate is null then 'RM'
    else 'DP'
    end
    from Account
    inner join dbo.acc_InvoiceAccount on dbo.acc_InvoiceAccount.InvoiceAccountId = Account.AccountId  
    Union All
    Select RupayUser.RupayUserId, 
    RupayUser.BirthDate
    From dbo.RupayUser
    inner join dbo.Account
     on dbo.Account.AccountId = dbo.RupayUser.RupayUserId ) as Tab



 и так тоже неправильно:
Код

Select top 1000 * from (select Account.AccountId
    ,Account.AmountCurrency
    ,Account.CreationDate
    ,legal_LegalEntity.Name
    ,legal_LegalEntity.FullName
    ,legal_LegalEntity.Fax
    ,legal_LegalEntity.Phone
    ,legal_LegalEntity.SiteUrl
    ,legal_LegalEntity.Inn
    ,legal_LegalEntity.Kpp
    ,legal_LegalEntity.LegalAddress
    ,legal_LegalEntity.MobilePhone
    ,legal_LegalEntity.Ogrn
    ,legal_LegalEntity.Okpo
    ,legal_Contract.ContractId
    ,legal_Contract.ContractNumber
    ,legal_Contract.ContractDate
    ,legal_LegalEntity.BankId
    ,legal_LegalEntity.SettleAccount
    ,legal_Bank.NEWNUM
    ,legal_Bank.KSNP
    ,legal_LegalEntity.LegalAddress as LegalAddressYurik 
    ,legal_LegalEntity.RealAddress as RealAddressYurik
    ,legal_LegalEntity.LegalEntityId
    ,fizik_goga = case when legal_LegalEntity.LegalEntityId is not NULL then 'yurik'
    else 'fizik' 
    end
    , organization = case when Account.CompanyTransferDate is null then 'RM'
    else 'DP'
    end
    from Account
    inner join acc_RupayAccount on Account.AccountId = acc_RupayAccount.RupayAccountId
    left join dbo.RupayUser on RupayUser.RupayUserId = acc_RupayAccount.RupayUserId
    left join dbo.legal_LegalEntity on legal_LegalEntity.RupayUserId = RupayUser.RupayUserId
    left join dbo.legal_Contract on legal_LegalEntity.ContractId = legal_Contract.ContractId
    left join dbo.legal_Bank on legal_Bank.BankId = legal_LegalEntity.BankId
    union all
    -- СКО
    select Account.AccountId
    ,Account.AmountCurrency
    ,Account.CreationDate
    ,'' as Name
    ,'' as FullName
    ,'' as Fax
    ,'' as Phone
    ,'' as SiteUrl
    ,'' as Inn
    ,'' as Kpp
    ,'' as LegalAddress
    ,'' as MobilePhone
    ,'' as Ogrn
    ,'' as Okpo
    ,'' as ContractId
    ,'' as ContractNumber
    ,'' as ContractDate
    ,'' as BankId
    ,'' AS SettleAccount
    ,'' AS NEWNUM
    ,'' as KSNP
    ,'' as LegalAddressYurik 
    ,'' as RealAddressYurik
    ,'' as LegalEntityId
    ,'SKO' as fizik_goga
    , organization = case when Account.CompanyTransferDate is null then 'RM'
    else 'DP'
    end
    from Account
    inner join dbo.acc_InvoiceAccount on dbo.acc_InvoiceAccount.InvoiceAccountId = Account.AccountId  
    Union All
    Select RupayUser.RupayUserId, 
    cast(RupayUser.BirthDate as date) ,
    NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
    NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
    NULL, NULL
    From dbo.RupayUser
    inner join dbo.Account
     on dbo.Account.AccountId = dbo.RupayUser.RupayUserId ) as Tab


помогите пожалуйста их объединить


Автор: Zloxa 18.8.2011, 10:15
Цитата(mauar @  18.8.2011,  10:02 Найти цитируемый пост)
ругается матом

Вы наверно залились краской, потупились и не решились повторять эти глупости перед достойной публикой?

Автор: mauar 18.8.2011, 10:18
а всё таки как их объеденить, union all есть, даже если пустые колонки я их прописываю как Null а всё равно не хочет

Автор: Zloxa 18.8.2011, 10:20
и все таки, приведите текст ошибки. Желательно с указанием номера строки и позиции курсора. Квери аналайзер для некоторых типов ошибок может и это показать.

Автор: mauar 18.8.2011, 10:32
конвертацию вроде тоже делал cast(RupayUser.BirthDate as date) ,
может я не то конфертирую, я новичок sql 

текст ошибки:
Msg 241, Level 16, State 1, Line 1
Conversion failed when converting date and/or time from character string.

Автор: Zloxa 18.8.2011, 10:42
Цитата(mauar @  18.8.2011,  10:32 Найти цитируемый пост)
Conversion failed when converting date and/or time from character string. 

Другими словами, какое-то одно из полей, верхнем запросе определенном как дата, не может быть преобразованно к дате из строки во втором запросе. Возможно там содержится матерное слово, и это слово сервер затрудняется трансформировать в дату. А может быть столбец содержит данные, которые не совпадают с форматом представления дыты для  неявной конверсии и формат преобразования надо укзать явно.

Во первых тут можно схалявить и верхний с нижним подзапросом поменять местами, чтобы дата преобразовывалась в строку а не строка в дату, так больше шансов избежать ошибки.

Если же устранять саму ошибку... для начала надо локализовать поле, в котором она происходит. Обычно, чтобы отловить подобную ошибку, я начинаю коментировать поле за полем в обоих запросах, до тех пор, пока ошибка не устранится.Если запрос возвращает полей, использую для поска метод половинного деления -  коментирую половину полей, если ошибка не ушла, коментирую половину от оставшейся половины....  но тут, мне кажется - не ваш случай.  
После того, как поле локализуется, внимательно изучить данные, содержащиеся в этом поле и выявить те, которые не удается преобразовать в дату и что нибудь с ними сделать.

Автор: mauar 18.8.2011, 10:59
сделал так 

Код

Select top 1000 * from (select Account.AccountId
    ,Account.AmountCurrency
    , cast(Account.CreationDate as date)
    ,legal_LegalEntity.Name
    ,legal_LegalEntity.FullName
    ,legal_LegalEntity.Fax
    ,legal_LegalEntity.Phone
    ,legal_LegalEntity.SiteUrl
    ,legal_LegalEntity.Inn
    ,legal_LegalEntity.Kpp
    ,legal_LegalEntity.LegalAddress
    ,legal_LegalEntity.MobilePhone
    ,legal_LegalEntity.Ogrn
    ,legal_LegalEntity.Okpo
    ,legal_Contract.ContractId
    ,legal_Contract.ContractNumber
    ,legal_Contract.ContractDate
    ,legal_LegalEntity.BankId
    ,legal_LegalEntity.SettleAccount
    ,legal_Bank.NEWNUM
    ,legal_Bank.KSNP
    ,legal_LegalEntity.LegalAddress as LegalAddressYurik 
    ,legal_LegalEntity.RealAddress as RealAddressYurik
    ,legal_LegalEntity.LegalEntityId
    ,fizik_goga = case when legal_LegalEntity.LegalEntityId is not NULL then 'yurik'
    else 'fizik' 
    end
    , organization = case when Account.CompanyTransferDate is null then 'RM'
    else 'DP'
    end
    from Account
    inner join acc_RupayAccount on Account.AccountId = acc_RupayAccount.RupayAccountId
    left join dbo.RupayUser on RupayUser.RupayUserId = acc_RupayAccount.RupayUserId
    left join dbo.legal_LegalEntity on legal_LegalEntity.RupayUserId = RupayUser.RupayUserId
    left join dbo.legal_Contract on legal_LegalEntity.ContractId = legal_Contract.ContractId
    left join dbo.legal_Bank on legal_Bank.BankId = legal_LegalEntity.BankId
    union all
    -- СКО
    select Account.AccountId
    ,Account.AmountCurrency
    ,Account.CreationDate
    ,'' as Name
    ,'' as FullName
    ,'' as Fax
    ,'' as Phone
    ,'' as SiteUrl
    ,'' as Inn
    ,'' as Kpp
    ,'' as LegalAddress
    ,'' as MobilePhone
    ,'' as Ogrn
    ,'' as Okpo
    ,'' as ContractId
    ,'' as ContractNumber
    ,'' as ContractDate
    ,'' as BankId
    ,'' AS SettleAccount
    ,'' AS NEWNUM
    ,'' as KSNP
    ,'' as LegalAddressYurik 
    ,'' as RealAddressYurik
    ,'' as LegalEntityId
    ,'SKO' as fizik_goga
    , organization = case when Account.CompanyTransferDate is null then 'RM'
    else 'DP'
    end
    from Account
    inner join dbo.acc_InvoiceAccount on dbo.acc_InvoiceAccount.InvoiceAccountId = Account.AccountId  
    Union All
    Select RupayUser.RupayUserId, 
    cast(RupayUser.BirthDate as date) ,
    NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
    NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
    NULL, NULL
    From dbo.RupayUser
    inner join dbo.Account
     on dbo.Account.AccountId = dbo.RupayUser.RupayUserId ) as Tab


теперь выдает ошибку:

Msg 205, Level 16, State 1, Line 1
All queries combined using a UNION, INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists.

что она означает?

Автор: Zloxa 18.8.2011, 11:08
Цитата(mauar @  18.8.2011,  10:59 Найти цитируемый пост)
All queries combined using a UNION, INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists.
что она означает? 

Объединяемые запросы должны возвращать одинаковое количество столбцов

Добавлено через 1 минуту и 11 секунд
Цитата(mauar @  18.8.2011,  10:59 Найти цитируемый пост)
, cast(Account.CreationDate as date)

Какого типа CreationDate? Кастовать дату в дату - не абсурд ли? Может лучше кастануть в строку?

Автор: mauar 18.8.2011, 11:16
да строка Account.CreationDate имеет тип datetime, но если в строку тогда опять ругаться будет что тип не правильный, хм а почему сейчас количество полей неправильно возвращает, не писать же кучу Null как это обойти?

Автор: Zloxa 18.8.2011, 11:23
Цитата(mauar @  18.8.2011,  11:16 Найти цитируемый пост)
а почему сейчас количество полей неправильно возвращает,

Потому что вы так написали. Посчитайте, это действительно так.

Автор: mauar 18.8.2011, 11:25
Код

Select top 1000 * from (select Account.AccountId
    ,Account.AmountCurrency
    , cast(Account.CreationDate as date)
    ,legal_LegalEntity.Name
    ,legal_LegalEntity.FullName
    ,legal_LegalEntity.Fax
    ,legal_LegalEntity.Phone
    ,legal_LegalEntity.SiteUrl
    ,legal_LegalEntity.Inn
    ,legal_LegalEntity.Kpp
    ,legal_LegalEntity.LegalAddress
    ,legal_LegalEntity.MobilePhone
    ,legal_LegalEntity.Ogrn
    ,legal_LegalEntity.Okpo
    ,legal_Contract.ContractId
    ,legal_Contract.ContractNumber
    ,legal_Contract.ContractDate
    ,legal_LegalEntity.BankId
    ,legal_LegalEntity.SettleAccount
    ,legal_Bank.NEWNUM
    ,legal_Bank.KSNP
    ,legal_LegalEntity.LegalAddress as LegalAddressYurik 
    ,legal_LegalEntity.RealAddress as RealAddressYurik
    ,legal_LegalEntity.LegalEntityId
    ,fizik_goga = case when legal_LegalEntity.LegalEntityId is not NULL then 'yurik'
    else 'fizik' 
    end
    , organization = case when Account.CompanyTransferDate is null then 'RM'
    else 'DP'
    end
    from Account
    inner join acc_RupayAccount on Account.AccountId = acc_RupayAccount.RupayAccountId
    left join dbo.RupayUser on RupayUser.RupayUserId = acc_RupayAccount.RupayUserId
    left join dbo.legal_LegalEntity on legal_LegalEntity.RupayUserId = RupayUser.RupayUserId
    left join dbo.legal_Contract on legal_LegalEntity.ContractId = legal_Contract.ContractId
    left join dbo.legal_Bank on legal_Bank.BankId = legal_LegalEntity.BankId
    union all
    -- СКО
    select Account.AccountId
    ,Account.AmountCurrency
    ,Account.CreationDate
    ,'' as Name
    ,'' as FullName
    ,'' as Fax
    ,'' as Phone
    ,'' as SiteUrl
    ,'' as Inn
    ,'' as Kpp
    ,'' as LegalAddress
    ,'' as MobilePhone
    ,'' as Ogrn
    ,'' as Okpo
    ,'' as ContractId
    ,'' as ContractNumber
    ,'' as ContractDate
    ,'' as BankId
    ,'' AS SettleAccount
    ,'' AS NEWNUM
    ,'' as KSNP
    ,'' as LegalAddressYurik 
    ,'' as RealAddressYurik
    ,'' as LegalEntityId
    ,'SKO' as fizik_goga
    , organization = case when Account.CompanyTransferDate is null then 'RM'
    else 'DP'
    end
    from Account
    inner join dbo.acc_InvoiceAccount on dbo.acc_InvoiceAccount.InvoiceAccountId = Account.AccountId  
    Union All
    Select RupayUser.RupayUserId, 
    cast(RupayUser.BirthDate as date),
    NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
    NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
    NULL, NULL
    From dbo.RupayUser
    inner join dbo.Account
     on dbo.Account.AccountId = dbo.RupayUser.RupayUserId ) as Tab



Сейчас пишет что некорртектный синтаксис
Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'select'.

ругается на последнюю строчку а именно на as Tab
в чем тут может быть ошибка? 

Автор: mauar 18.8.2011, 12:32
Всё родил, сделал по левому соединению из первого запроса ))

Код

Select top 1000 * from (select Account.AccountId
    ,Account.AmountCurrency
    ,Account.CreationDate 
    ,legal_LegalEntity.Name
    ,legal_LegalEntity.FullName
    ,legal_LegalEntity.Fax
    ,legal_LegalEntity.Phone
    ,legal_LegalEntity.SiteUrl
    ,legal_LegalEntity.Inn
    ,legal_LegalEntity.Kpp
    ,legal_LegalEntity.LegalAddress
    ,legal_LegalEntity.MobilePhone
    ,legal_LegalEntity.Ogrn
    ,legal_LegalEntity.Okpo
    ,legal_Contract.ContractId
    ,legal_Contract.ContractNumber
    ,legal_Contract.ContractDate
    ,legal_LegalEntity.BankId
    ,legal_LegalEntity.SettleAccount
    ,legal_Bank.NEWNUM
    ,legal_Bank.KSNP
    ,RupayUser.RupayUserId
    ,RupayUser.BirthDate
    ,legal_LegalEntity.LegalAddress as LegalAddressYurik 
    ,legal_LegalEntity.RealAddress as RealAddressYurik
    ,legal_LegalEntity.LegalEntityId
    ,fizik_goga = case when legal_LegalEntity.LegalEntityId is not NULL then 'yurik'
    else 'fizik' 
    end
    , organization = case when Account.CompanyTransferDate is null then 'RM'
    else 'DP'
    end
    from Account
    inner join acc_RupayAccount on Account.AccountId = acc_RupayAccount.RupayAccountId
    left join dbo.RupayUser on RupayUser.RupayUserId = acc_RupayAccount.RupayUserId
    left join dbo.legal_LegalEntity on legal_LegalEntity.RupayUserId = RupayUser.RupayUserId
    left join dbo.legal_Contract on legal_LegalEntity.ContractId = legal_Contract.ContractId
    left join dbo.legal_Bank on legal_Bank.BankId = legal_LegalEntity.BankId    
    where Account.CreationDate >'2011-01-01'
    union all

    select Account.AccountId
    ,Account.AmountCurrency
    ,Account.CreationDate
    ,Null
    ,Null
    ,'' as Name
    ,'' as FullName
    ,'' as Fax
    ,'' as Phone
    ,'' as SiteUrl
    ,'' as Inn
    ,'' as Kpp
    ,'' as LegalAddress
    ,'' as MobilePhone
    ,'' as Ogrn
    ,'' as Okpo
    ,'' as ContractId
    ,'' as ContractNumber
    ,'' as ContractDate
    ,'' as BankId
    ,'' AS SettleAccount
    ,'' AS NEWNUM
    ,'' as KSNP
    ,'' as LegalAddressYurik 
    ,'' as RealAddressYurik
    ,'' as LegalEntityId
    ,'SKO' as fizik_goga
    , organization = case when Account.CompanyTransferDate is null then 'RM'
    else 'DP'
    end
    from Account
    inner join dbo.acc_InvoiceAccount on dbo.acc_InvoiceAccount.InvoiceAccountId = Account.AccountId ) as Tab


гы осталось ещё 3 запроса сюда прикрутить ))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)