/ / SQL Server Przechowywana procedura SELECT DISTINCT - sql, sql-server, stored-procedures

Procedura przechowywana serwera SQL SELECT DISTINCT - sql, sql-server, stored-procedures

Pracuję nad odszyfrowaniem niektórych procedur przechowywanychi mają minimalne słownictwo na ten temat. Czy ktoś może mi wyjaśnić, jaką rolę spełnia ten "1" w poniższym stwierdzeniu? Nie mogę znaleźć samouczków składni DISTINCT, aby to wyjaśnić. Odnoszę się do faktycznego "1" w stwierdzeniu.

USE TEST
GO
SET ANSI_NULLS, QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].sp_F_SQL
(@Id int)
WITH ENCRYPTION AS
SELECT DISTINCT
dbo.MAP_SQL.rID,
dbo.MAP_SQL.lID,
dbo.MAP_SQL.cID,
**1** as RESPFACT,
dbo.MAP_SQL.Longitude,
dbo.MAP_SQL.Latitude,
dbo.MAP_SQL.Altitude,

...

Odpowiedzi:

2 dla odpowiedzi № 1

The 1 nie ma z tym nic wspólnego DISTINCT. Po prostu dodaje kolumnę wyjściową zatytułowaną RESPFACT ma wartość 1 dla wszystkich rzędów. Podejrzewam, że cokolwiek jest trawiący wyjście wymaga tej kolumny.

SELECT DISTINCT zwraca tylko "odrębne" wiersze z danych wyjściowych - czyli wiersze, w których WSZYSTKIE wartości kolumn są równe.

na przykład jeśli twój wynik bez odrębny był

1   2   ABC   DEF
2   3   GHI   JLK
2   1   ABC   DEF
1   2   ABC   DEF

Wtedy wiersze 1 i 4 będą postrzegane jako "równe" i jeden będzie zwrócony:

1   2   ABC   DEF
2   3   GHI   JLK
2   1   ABC   DEF

Zwróć uwagę, że wiersze 1 i 3 NIE są równe, mimo że 3 z 4 wartości kolumn są zgodne.


2 dla odpowiedzi nr 2

The 1 generuje kolumnę o nazwie RESPFACT. To zawsze ma wartość 1.

Nie mogę powiedzieć, dlaczego to jest ważne dla sp_F_SQL procedura.

The distinct zwraca unikalne wiersze. Jeśli istnieją duplikaty wartości dla kolumn w select następnie zwracany jest tylko jeden wiersz. Oczywiście, że RESPFACT kolumna jest taka sama we wszystkich wierszach, więc nie ma wpływu na zwracane wiersze.