Inte visa dubletter
Hej, nu är man här igen och frågar.. blir inte klok på detta :)
Min Log-tabell ser ut på detta sättet ungefär:
<code>ScheduleID RecipientName RecipientGroup ScheduleMedium
45 Patrik Ahlberg Anställda SMS
45 Oscar Jansson Anställda SMS
45 Patrik Ahlberg SMS
46 Rickard Andersson SMS</code>
Osv osv..
Att Patrik finns på två ställen är för att användaren har valt att skicka både till gruppen Anställde och sen valt Patrik från listan av mottagare. Det loggas så men det skickas bara ett sms till Patrik.
När man ska debitera (som om det skulle hända) så ska det alltså bara räknas som om Patrik fått ett sms och inte två. Men hur ska jag göra för att lista alla poster men inte dubletter av Patrik?
Har testat så här utan resultat:
<code>CREATE PROCEDURE selectLogByDate
@CompanyName nvarchar(50),
@StartDate datetime,
@FinishDate datetime
AS
SELECT
DISTINCT RecipientName,
ScheduleID,
RecipientGroup,
ScheduleMedium
FROM
Log
WHERE
CompanyName = @CompanyName AND
LogDate >= @StartDate AND
LogDate <= @FinishDate
ORDER BY
ScheduleID, RecipientGroup DESC
GO</code>
Svara
Sv: Inte visa dubletter
En DISTINCT tar hela raden, du får med 2 Patrik för att Recipientgroup är olika på dessa poster...
Skippa Recipientgroup så funkar det.
/micke
Svara
Sv: Inte visa dubletter
Hmm, men det måste väl finnas något sett att kolla om namnet redan finns med i samma ScheduleID?
Vill helst inte behöva göra om hela databasmodellen och koda om allt :)
Svara
Sv: Inte visa dubletter
Jo ok.. får väl göra så men helst skulle jag vilja så att den tog med gruppen också. Den började att ta alla som har grupp och sen om samma namn finns fast utan grupp så skulle den utesluta namnet.
Men det kanske inte går att lösa på något smidigt sett så jag får göra som du sa.
Tack!
Ps.. håller tråden öppen ett litet tag till Ds.
Svara
Sv: Inte visa dubletter
Om alla har minst en rad MED grupp så kan du väl bara utesluta dem utan grupp?
Svara
Sv: Inte visa dubletter
Men det är inte säkert att dom är med i någon grupp.
Där man gör sin schemaläggning så kan man välja att dra in både grupper och mottagare.
Och om man väljer en mottagare som redan finns i en vald mottagargrupp så blir det dubletter som jag vill bli av med.
Eller det ska finnas kvar i logg-tabellen men inte finnas med på debiteringssidan.
Svara
Sv: Inte visa dubletter
Testa:
<code>
SELECT
RecipientName,
ScheduleID,
MAX(RecipientGroup) as RecipientGroup,
ScheduleMedium
FROM
Log
WHERE
CompanyName = @CompanyName AND
LogDate >= @StartDate AND
LogDate <= @FinishDate
GROUP BY RecipientName, ScheduleID, ScheduleMedium
ORDER BY
ScheduleID
</code>
Här får du bara en rad om de är distincta förutom RecipientGroup.
Svara