请教个问题
一个表table
里面有三个字段date,qty,product
我想在某一天date显示某个生产内容product的数量qty
只显示一次,该怎么显示比如
date          product   qty
2008-10-10    足球        3
2008-10-10    足球        3
2008-10-10    足球        3我只想显示一次,因为当天的product只生产了3个
2008-10-10    足球      
2008-10-10    足球      
2008-10-10    足球        3

解决方案 »

  1.   

    我只想显示一次,因为当天的product只生产了3个 
    -------------------------------------------
    那为什么会有三条记录合计数量是9呢?
      

  2.   

    if object_id('tb')is not null drop table tb
    go
    create table tb(date datetime,          product nvarchar(5),  qty VARCHAR(5)) 
    insert tb select '2008-10-10' ,   N'足球',        3 
    insert tb select '2008-10-10' ,   N'足球',        3 
    insert tb select '2008-10-10',    N'足球',        3 
    ALTER TABLE TB
    ADD ID INT IDENTITY(1,1)
    GO
    SELECT DATE,PRODUCT,QTY=CASE WHEN EXISTS(SELECT  QTY FROM TB WHERE ID>T.ID ) THEN '' ELSE QTY END FROM TB T
    ALTER TABLE TB
    DROP COLUMN ID
    /*DATE                                                   PRODUCT QTY   
    ------------------------------------------------------ ------- ----- 
    2008-10-10 00:00:00.000                                足球      
    2008-10-10 00:00:00.000                                足球      
    2008-10-10 00:00:00.000                                足球      3*/
      

  3.   


    CREATE TABLE #(DATE CHAR(10),PRODUCT CHAR(10),QTY INT)
    INSERT #
    SELECT 
    '2008-10-10'   , '足球' ,       3
    UNION ALL SELECT  
    '2008-10-10'    ,'足球'   ,    3   
    UNION ALL SELECT 
    '2008-10-10'    ,'足球'  ,      3 
    SELECT * FROM #
    SELECT DATE,PRODUCT,CASE WHEN EXISTS(SELECT 1 FROM (SELECT ROW_NUMBER() OVER(ORDER BY DATE,PRODUCT) AS ID,* FROM #) X WHERE S.DATE=X.DATE AND S.PRODUCT=X.PRODUCT AND X.ID>S.ID) THEN '' ELSE CONVERT(VARCHAR,QTY) END AS QTY FROM (SELECT ROW_NUMBER() OVER(ORDER BY DATE,PRODUCT) AS ID,* FROM #)S ORDER BY ID/*
    DATE       PRODUCT    QTY
    ---------- ---------- ------------------------------
    2008-10-10 足球         
    2008-10-10 足球         
    2008-10-10 足球         
    2008-10-10 足球         3(4 row(s) affected)
    */
    DROP TABLE #
      

  4.   


    奇怪,你这个ADD ID INT IDENTITY(1,1)中的IDENTITY(1,1)什么意思?
    而且ID>T.ID ,虽然你后来添加了ID列,但原先没有值啊,而且就算有值,你意思是递增的?
      

  5.   

    IDENTITY (函數)
    僅使用在有 INTO table 子句的 SELECT 陳述式,以將識別資料行插入新的資料表。雖然類似,但 IDENTITY 函數不是與 CREATE TABLE 和 ALTER TABLE 共用的 IDENTITY 屬性.語法
    IDENTITY ( data_type [ , seed , increment ] ) AS column_name引數
    data_type是識別資料行的資料型別。識別資料行的有效資料型別就是整數資料型別類別的任何資料型別 (除了 bit 資料型別以外),或 decimal 資料型別。seed是要指派到資料表中第一個資料列的值。每一個後續的資料列會被指派下一個識別值,它等於最後一個 IDENTITY 值加上 increment 值。如果沒有指定 seed 或 increment,則兩者都預設為 1。increment是新增到資料表內後續資料列的 seed 值之遞增值。Column_name是插入到新資料表的資料行名稱。 傳回型別
    傳回與 data_type 相同的型別。備註
    因為此函數會在資料表中建立資料行,資料行的名稱必須以下列這些方式之一在選取清單中指定:--(1)
    SELECT IDENTITY(int, 1,1) AS ID_Num
    INTO NewTable
    FROM OldTable--(2)
    SELECT ID_Num = IDENTITY(int, 1, 1)
    INTO NewTable
    FROM OldTable