Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите пожалуйсто объеденить между собой запросы  [new]
mauar
Member

Откуда:
Сообщений: 10
Помогите пожалуйсто объеденить между собой запросы

Есть запрос 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
[/code]
помогите пожалуйста их объединить

Сообщение было отредактировано: 18 авг 11, 11:20
18 авг 11, 11:08    [11137945]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйсто объеденить между собой запросы  [new]
Glory
Member

Откуда:
Сообщений: 104751
    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 
А где здесь объединение ? Просто тупо текст одногь запроса воткнули куда то в текст другого

 from Account
    inner join dbo.acc_InvoiceAccount on dbo.acc_InvoiceAccount.InvoiceAccountId = Account.AccountId  
    Union All
    Select RupayUser.RupayUserId, 
    RupayUser.BirthDate
    From dbo.RupayUser
И что неясного в сообщении, что все все запросы в Union должны иметь одинаковое число полей ?
18 авг 11, 11:25    [11138166]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйсто объеденить между собой запросы  [new]
mauar
Member

Откуда:
Сообщений: 10
Ну так вот же


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



тут и объединение и конвертация данных в последнем запросе cast(RupayUser.BirthDate as date) ,

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

просто я новичок в sql сам так просто не разберусь
18 авг 11, 11:38    [11138313]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйсто объеденить между собой запросы  [new]
Glory
Member

Откуда:
Сообщений: 104751
mauar
Conversion failed when converting date and/or time from character string.

И что тут непонятного ?
Запрос
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
разве у вас работает ?
18 авг 11, 11:40    [11138342]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйсто объеденить между собой запросы  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
mauar,

RupayUser.BirthDate - строкового типа?
И содержит некорректное строковое представление даты.
Что содержит - нам неведомо...
18 авг 11, 11:41    [11138355]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйсто объеденить между собой запросы  [new]
mauar
Member

Откуда:
Сообщений: 10
    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 

Вообще да работает ))

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

а сейчас ругается на то что данные не того типа, вроде как все работать должно
18 авг 11, 11:43    [11138377]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйсто объеденить между собой запросы  [new]
mauar
Member

Откуда:
Сообщений: 10
это тип smalldatetime, но я же её перевожу в дату cast(RupayUser.BirthDate as date) или неправильно?
18 авг 11, 11:45    [11138385]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйсто объеденить между собой запросы  [new]
Glory
Member

Откуда:
Сообщений: 104751
mauar
тут же почему Null прописано количество полей ведь должно совпадать вроде,

Вы уверены ?
select Account.AccountId, Account.AmountCurrency,Account.CreationDate ...
union all
select Account.AccountId, Account.AmountCurrency,Account.CreationDate ...
union all
Select RupayUser.RupayUserId, cast(RupayUser.BirthDate as date),  NULL ...
18 авг 11, 11:46    [11138395]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйсто объеденить между собой запросы  [new]
mauar
Member

Откуда:
Сообщений: 10
а почему она тогда ругается на то что количество полей разное, после того как Null прописал ошибки этой нет
18 авг 11, 11:48    [11138421]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйсто объеденить между собой запросы  [new]
Glory
Member

Откуда:
Сообщений: 104751
mauar
а почему она тогда ругается на то что количество полей разное, после того как Null прописал ошибки этой нет

Наверное потому, что кроме количества полей важен и их порядок ?
Вы уверены, что Account.AmountCurrency и cast(RupayUser.BirthDate as date) должны быть вторыми в своих списках ?
18 авг 11, 11:51    [11138445]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйсто объеденить между собой запросы  [new]
mauar
Member

Откуда:
Сообщений: 10
Нет не уверен, а как правильно подскажите пожалуйста, я действительно новичок в sql
18 авг 11, 11:54    [11138472]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйсто объеденить между собой запросы  [new]
SamMan
Member

Откуда: Moscow
Сообщений: 759
В общем - обнародуйте КРИЭЙТ ТЕЙБЛЫ всех участвующих в вопросе таблиц.
18 авг 11, 11:59    [11138516]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйсто объеденить между собой запросы  [new]
Glory
Member

Откуда:
Сообщений: 104751
mauar
Нет не уверен, а как правильно подскажите пожалуйста, я действительно новичок в sql

Т.е. вы порядок полей в каждом select ставите от балды, в надежде, что сервер сам День рождения RupayUser.BirthDate поместит не в КоличествоВалюты Account.AmountCurrency, а в ДатуСозданияСчета Account.CreationDate ?
18 авг 11, 12:00    [11138530]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйсто объеденить между собой запросы  [new]
mauar
Member

Откуда:
Сообщений: 10
сделал так:

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.

что она означает?
18 авг 11, 12:00    [11138534]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйсто объеденить между собой запросы  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
mauar
что она означает?
Английским по белому написано, что она означает.
18 авг 11, 12:03    [11138558]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйсто объеденить между собой запросы  [new]
Glory
Member

Откуда:
Сообщений: 104751
mauar
All queries combined using a UNION, INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists.

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

Она означает то, что в ней написано
Что нужно тупо проверить список выражений в каждом из select-ов
18 авг 11, 12:03    [11138562]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйсто объеденить между собой запросы  [new]
mauar
Member

Откуда:
Сообщений: 10

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
в чем тут может быть ошибка?
18 авг 11, 12:21    [11138737]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйсто объеденить между собой запросы  [new]
Glory
Member

Откуда:
Сообщений: 104751
mauar
Сейчас пишет что некорртектный синтаксис
Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'select'.

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

В этом запросе нет синтаксических ошибок
Либо не тот запрос предоставили, либо ошибку привели неправильную
18 авг 11, 12:28    [11138782]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйсто объеденить между собой запросы  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Либо опять строчный комментарий MS SQL SMS неправильно обрабатывает.
Попробуйте
-- СКО
заменить на
/*СКО*/
18 авг 11, 13:01    [11139109]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйсто объеденить между собой запросы  [new]
mauar
Member

Откуда:
Сообщений: 10
убрал вообще комментарий, то же самое пишет в чем может быть прикол, по идее то должен уже отработаться то
18 авг 11, 13:04    [11139136]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйсто объеденить между собой запросы  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Кстати, версия до сих пор неизвестна. (PRINT @@VERSION)
Следовательно, не видно, какие CU и SP накатывались.
18 авг 11, 13:05    [11139142]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйсто объеденить между собой запросы  [new]
Glory
Member

Откуда:
Сообщений: 104751
mauar
убрал вообще комментарий, то же самое пишет в чем может быть прикол, по идее то должен уже отработаться то

Синтаксическую ошибку можно исправить только только правильным написанием синтаксиса
Повторными запусками синтасическая ошибка не исправляется
18 авг 11, 13:27    [11139310]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйсто объеденить между собой запросы  [new]
mauar
Member

Откуда:
Сообщений: 10
Всё родил, сделал по левому соединению из первого запроса ))
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 запроса сюда прикрутить ))
18 авг 11, 13:32    [11139361]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить