Как получить две строки со всеми одинаковыми значениями, кроме одного столбца - PullRequest
0 голосов
/ 29 апреля 2019

Я хотел бы получить все строки, в которых все столбцы имеют одинаковое значение, кроме идентификатора столбца.Я попытался сделать это с помощью оператора where, но я все еще вижу все остальные строки.

SELECT 
a.strBedrijf,a.IdLeverancier,a.strLevFactNr, a.Id, a.dtmFactuur, a.fBedragInc, be.bDeleted,

'https://documents.blabla/' + (select top(1) textval from tblsettings where id='Workflow_customerid') + '/?p=PurchaseInvoiceDetails&Id=' + a.id  as Url,

case when be.bDeleted = 'JA' then 'NEE'

when be.bDeleted = 'NEE' then 'JA' end as AdministratieActief

FROM   tblfacturen A, tblfacturen B

        join tblBedrijven be on strBedrijf=be.Id

WHERE

be.bDeleted = 'NEE'  and

A.idleverancier = B.idleverancier

    AND A.strLevFactNr=B.strLevFactNr

    AND A.dtmFactuur=B.dtmFactuur

 AND A.fBedragInc=B.fBedragInc

   AND A.ID != B.ID

AND a.bDeleted ='NEE'

AND b.bDeleted ='NEE'

and a.strlevfactnr not like 'corr%'

group by A.strBedrijf,a.IdLeverancier,a.strLevFactNr, a.Id, a.dtmFactuur,     a.fBedragInc, be.bDeleted

Это мой вывод:

L014909 227330  e2f02668-b1ac-416f-809d-a9a100c689c2    2018-11-23 00:00:00.000 288 NEE JA
L021960 24614767    48cf2ed2-160f-43a2-8bb0-a9a0006f8cf1    2018-11-16 00:00:00.000 232,05  NEE JA
L1630   297373  4200e599-f7ec-45fb-a003-a3570096289c    2014-06-24 00:00:00.000 484,75  NEE JA
L1630   297373  bfccef8d-dccb-4263-bcc7-a355006073de    2014-06-24 00:00:00.000 484,75  NEE JA
L017875 3493813 8e112901-13ea-4ed3-abf8-a9b200756b98    2018-12-07 00:00:00.000 1832,47 NEE JA

но я бы хотелиметь этот вывод:

L1630   297373  4200e599-f7ec-45fb-a003-a3570096289c    2014-06-24 00:00:00.000 484,75  NEE JA
L1630   297373  bfccef8d-dccb-4263-bcc7-a355006073de    2014-06-24 00:00:00.000 484,75  NEE JA

Ответы [ 2 ]

0 голосов
/ 29 апреля 2019

Я хотел бы получить все строки, в которых все столбцы имеют одинаковое значение, кроме идентификатора столбца.

Использовать оконные функции:

select t.*
from (select t.*, count(*) over (partition by col1, col2) as cnt  -- list all columns here
      from t
     ) t
where cnt >= 2
order by col1, col2;
0 голосов
/ 29 апреля 2019

Вам необходимо объединить таблицу с равными всеми столбцами и не равными id, как в следующем примере

create table test (
    id int,
    col1 int,
    col2 int
)

SELECT t1.*
FROM test t1
JOIN test t2 ON t1.col1 = t2.col1 AND t1.col2 = t2.col2 AND t1.id <> t2.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...