/ / SQL Distinct Mulitple Query Combine - mysql

SQL Distinct Mulitple Query Combine - mysql

Muszę uzyskać informacje z dwóch tabel, jak tymożna zobaczyć poniżej, ale przez zmianę, więc obecnie uruchamiają zasadniczo to samo zapytanie 4 razy, 2 razy dla każdej zmiany. W przypadku pierwszej zmiany pobierają wszystkie numery kartonów, które NIE są RÓWNE do DELC, a drugie do wszystkich kartonów EQUAL do DELC. Problem polega na tym, że chcemy wyraźnych numerów kartonów, a jeśli karton został przetworzony w połowie na pierwszej zmianie i skończył się na drugiej zmianie, mimo że robimy odrębne, karton pojawia się dwa razy, ponieważ różni się tylko dla każdego zapytania.

Czy istnieje sposób na uruchomienie WSZYSTKICH 4 zapytań razem i wyróżnienie wszystkich danych?

1 Day old 1st shift = DELC
select count(distinct a.Barcode)
from [RL_Ship].[dbo].[mSCAN] as a inner join
[RL_Ship].dbo].wmsInboundQueue] on
a.barcode = substring(message,26,20)
Where BagToteFlag = "Y" and direction = "Send"
and timeStamp >= "2016-06-14 03:00:00"
and timeStamp < "2016-06-14    15:00:00"
and substring(message,64,4) = "DELC"
and SUBSTRING(rawdata,21,20) > "0"

1 Day old 1st shift <> DELC
select count(distinct a.Barcode)
from [RL_Ship].[dbo].[mSCAN] as a inner join
[RL_Ship].dbo].wmsInboundQueue] on
a.barcode = substring(message,26,20)
Where a.BagToteFlag = "Y" and a.direction = "Send"
and a.timeStamp >= "2016-06-14 03:00:00"
and a.timeStamp < "2016-06-14 15:00:00"
and substring(message,64,4) <> "DELC"
and SUBSTRING(rawdata,21,20) > "0"

1 Day old 2nd shift = DELC
select count(distinct a.Barcode)
from [RL_Ship].[dbo].[mSCAN] as a inner join [RL_Ship].[dbo].
[wmsInboundQueue] on
a.barcode = substring(message,26,20)
Where a.BagToteFlag = "Y" and a.direction = "Send"
and a.timeStamp >= "2016-06-14 15:00:00"
and a.timeStamp < "2016-06-15 03:00:00"
and substring(message,64,4) = "DELC"
and SUBSTRING(rawdata,21,20) > "0"

1 Day old 2nd shift <> DELC
select count(distinct a.Barcode)
from [RL_Ship].[dbo].[mSCAN] as a inner join [RL_Ship].[dbo].
[wmsInboundQueue] on
a.barcode = substring(message,26,20)
Where a.BagToteFlag = "Y" and a.direction = "Send"
and a.timeStamp >= "2016-06-14 15:00:00"
and a.timeStamp < "2016-06-15 03:00:00"
and substring(message,64,4) <> "DELC"
and SUBSTRING(rawdata,21,20) > "0"

Odpowiedzi:

1 dla odpowiedzi № 1

Gdybym zrozumiał, że twoje pytanie poprawiło pierwsze zapytanie, starałbym się uzyskać pożądany rezultat

SELECT count(distinct barcode)  FROM (
select distinct a.Barcode <rest of query>
UNION
select distinct a.Barcode <rest of next query>
UNION ... )

0 dla odpowiedzi nr 2

Jeśli zrobię związek zawodowy i zdejmę część, którą otrzymamprawidłowa liczba, ponieważ duplikaty są usuwane we WSZYSTKICH zapytaniach, ale jeśli wykonam połączenie i liczba jest wyłączona, nie usuwa duplikatów .......

i faktycznie potrzebuję całkowitej liczby na zapytanie, ponieważ są to różne przesunięcia / zakresy czasu.

Odpowiedź na to, jak liczyć, a potem na to, że jest dobra, ale nie mogłabym tego zmusić do pracy i 2 Myślę, że to tylko da mi odliczenie WSZYSTKO?

Spróbowałem poniższych, ale dał mi następujący błąd:

Msg 156, Level 15, State 1, Line 36 Niepoprawna składnia w pobliżu słowa kluczowego „wybierz”.

EDYTOWAĆ: Ok, mam to działa, dodając na końcu „as table1”, ale jak podejrzewałem, daje mi to tylko sumę, ale bez duplikatów, co jest świetne, ale potrzebuję liczyć dla każdego z 4 zapytań. Jakieś pomysły na ten temat?

select count(distinct Barcode) from
(select distinct a.barcode
from [RL_Ship].[dbo].[mSCAN] as a inner join [RL_Ship].[dbo].
[wmsInboundQueue] on
a.barcode = substring(message,26,20)
Where BagToteFlag = "Y" and direction = "Send"
and timeStamp >= "2016-06-14 03:00:00" and timeStamp < "2016-06-14
15:00:00"
and substring(message,64,4) = "DELC"
and SUBSTRING(rawdata,21,20) > "0"
union
select distinct a.Barcode
from [RL_Ship].[dbo].[mSCAN] as a inner join [RL_Ship].[dbo].
[wmsInboundQueue] on
a.barcode = substring(message,26,20)
Where a.BagToteFlag = "Y" and a.direction = "Send"
and a.timeStamp >= "2016-06-14 03:00:00"
and a.timeStamp < "2016-06-14 15:00:00"
and substring(message,64,4) <> "DELC"
and SUBSTRING(rawdata,21,20) > "0"
union
select distinct a.Barcode
from [RL_Ship].[dbo].[mSCAN] as a inner join [RL_Ship].[dbo].
[wmsInboundQueue] on
a.barcode = substring(message,26,20)
Where a.BagToteFlag = "Y" and a.direction = "Send"
and a.timeStamp >= "2016-06-14 15:00:00"
and a.timeStamp < "2016-06-15 03:00:00"
and substring(message,64,4) = "DELC"
and SUBSTRING(rawdata,21,20) > "0"
union
select distinct a.Barcode
from [RL_Ship].[dbo].[mSCAN] as a inner join [RL_Ship].[dbo].
[wmsInboundQueue] on
a.barcode = substring(message,26,20)
Where a.BagToteFlag = "Y" and a.direction = "Send"
and a.timeStamp >= "2016-06-14 15:00:00"
and a.timeStamp < "2016-06-15 03:00:00"
and substring(message,64,4) <> "DELC"
and SUBSTRING(rawdata,21,20) > "0")