Използване на SQL Server 2000
маса
PersonID Date
001 11-02-2009
002 11-02-2009
003 11-02-2009
001 12-02-2009
004 12-02-2009
005 12-02-2009
003 13-02-2009
005 13-02-2009
Скоро…,
Искам да покажа всички Personid по дата.
Очакван резултат
PersonID Date
001 11-02-2009
002 11-02-2009
003 11-02-2009
004 11-02-2009
005 11-02-2009
001 12-02-2009
002 12-02-2009
003 12-02-2009
004 12-02-2009
005 12-02-2009
001 13-02-2009
002 13-02-2009
003 13-02-2009
004 13-02-2009
005 13-02-2009
Скоро…,
Всички Персониди трябва да се появяват по дата.
Написах заявка в Access
Запитване
SELECT AllPossibleCardEvents.PersonId FROM ((SELECT p.PersonId, AllDates.CardEventDate FROM (SELECT DISTINCT Date FROM TMP_Cardevent2) AllDates, Tmp_cardevent1 p) AllPossibleCardEvents LEFT OUTER JOIN TMP_cardevent2 Actual ON AllPossibleCardEvents.PersonId = Actual.PersonId AND AllPossibleCardEvents.Date = Actual.Date) )
Над заявката за достъп работи добре. Но същия резултат, който искам да покажа и в SQL.
Как да напиша заявка в SQL?
Нуждаете се от помощ при запитване.
Отговори:
0 за отговор № 1SELECT A.PersonID, B.Date
FROM (SELECT DISTINCT PersonID from myTable) A,
(SELECT DISTINCT Date from myTable) B
Не съм опитвал това. Но това ще направи декартов продукт.
0 за отговор № 2
Ако разбирам това правилно, искате всеки отделен персонид да бъде върнат за всяка отделна дата.
Ако е така, заявката ще бъде
SELECT DISTINCT PersonTable.PersonId, DateTable.Date FROM Table as PersonTable
CROSS JOIN (SELECT DISTINCT Date FROM Table) AS DateTable