Как сделать NOT NULL SQL с DateTime?

Вы агрегируете по связанным измерениям и получаете перерасчет.

Один из подходов заключается в использовании нескольких агрегаций:

SELECT u.id, u.username, COUNT(a.id) AS total_articles,
       SUM(c.num_comments) AS total_comments
FROM users u LEFT JOIN
     articles a
     ON a.user_id = a.id LEFT JOIN
     (SELECT c.article_id, COUNT(c.id) as num_comments
      FROM comments c
      GROUP BY c.article_id
     ) c
     ON a.id = c.article_id
GROUP BY u.id, u.username;
15
задан skaffman 26 September 2008 в 09:42
поделиться

2 ответа

erm это действительно работает? Я только что протестировал его?

/****** Object:  Table [dbo].[DateTest]    Script Date: 09/26/2008 10:44:21 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[DateTest](
    [Date1] [datetime] NULL,
    [Date2] [datetime] NOT NULL
) ON [PRIMARY]

GO
Insert into DateTest (Date1,Date2) VALUES (NULL,'1-Jan-2008')
Insert into DateTest (Date1,Date2) VALUES ('1-Jan-2008','1-Jan-2008')
Go
SELECT * FROM DateTest WHERE Date1 is not NULL
GO
SELECT * FROM DateTest WHERE Date2 is not NULL
16
ответ дан 1 December 2019 в 03:53
поделиться

Только для исключения возможности - это, кажется, не имеет никакого отношения ANSI_NULLS опция, потому что это управляет по сравнению с ПУСТЫМ УКАЗАТЕЛЕМ с = и <> операторы. IS [NOT] NULL работы, является ли ANSI_NULLS ON или OFF.

я также попробовал это против SQL Server 2005 с isql, потому что ANSI_NULLS значения по умолчанию к OFF при использовании Библиотеки DB.

2
ответ дан 1 December 2019 в 03:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: