Hola a todos,
tengo una tabla con la siguiente estructura:
CREATE TABLE [dbo].[OrderLines](
[IDORDERLINES] [int] IDENTITY(1,1) NOT NULL,
[IDCUSTOMER] [int] NULL,
[IDPRODUCT] [int] NULL,
[PRODUCTNAME] [varchar](200) NULL,
[QUANTITY] [int] NULL,
[PRICE] [decimal](18, 2) NULL,
[IDMENU] [int] NULL,
[MENULINE] [tinyint] NULL,
[DATE] [datetime] NULL,
[VAT] [decimal](18, 2) NULL,
[MCS_OrderNumber] [int] NULL,
[DATECREATION] [datetime] NULL,
[IDDELIVERING] [int] NULL
Necesito contar la cantidad de días que se han registrado órdenes
para cada cliente. Hay veces que para un determinado día un cliente
tiene más de una línea pero necesito contar ese día sólo como 1.
Ejemplo:
Select Idcustomer, Date, count(*)
From Orderlines
Where date between '20080801' and '20080930'
Group by idcustomer, date
Arroja este resultado:
110 2008-08-18 00:00:00.000 1
110 2008-08-21 00:00:00.000 1
110 2008-09-10 00:00:00.000 1
110 2008-09-12 00:00:00.000 1
111 2008-08-14 00:00:00.000 1
111 2008-08-18 00:00:00.000 1
111 2008-08-20 00:00:00.000 2
111 2008-08-21 00:00:00.000 1
111 2008-08-25 00:00:00.000 1
111 2008-08-27 00:00:00.000 1
111 2008-08-28 00:00:00.000 1
111 2008-09-22 00:00:00.000 1
111 2008-09-24 00:00:00.000 1
111 2008-09-25 00:00:00.000 1
111 2008-09-29 00:00:00.000 1
115 2008-08-18 00:00:00.000 2
115 2008-08-19 00:00:00.000 2
115 2008-08-20 00:00:00.000 2
115 2008-08-21 00:00:00.000 2
Las líneas que tienen un 2 deben contarse como un 1. Para ser más
claro, para el IdCustomer= 110, el valor que debo obtener es 4, para el
111, 11, etc.
Hay forma de obtener estos resultados con un solo select, sin
necesidad de hacer una tabla temporal o algo así?
Muchas gracias por la respuesta.
Saludos.
Mauricio
Copenhague, Dinamarca
Leer las respuestas