0

次のようなテーブルがあります

Date   | qty1 | qty2 | qty3 | qty4 | column6
1 july | 33   | 0    |  0   | 0    | xyz
1 July | 0    | 20   | 0    | 0    | xyz
1 July | 18   | 0    | 0    | 0    | abc
3 July | 0    | 0    | 0    | 11   | abc
3 july | 23   | 0    |  0   | 0    | xyz
4 July | 0    | 40   | 0    | 0    | xyz
4 July | 57   | 0    | 0    | 0    | abc
7 July | 0    | 12   | 0    | 0    | xyz

そして、SQL Server 2005 のストアド プロシージャで以下のような出力を探しています。

 Date   | qty1 | qty2 | qty3 | qty4 
 1 July | 51   | 20   | 0    | 0 
 2 July | 0    | 0    | 0    | 0
 3 July | 23   | 0    | 0    | 11
 4 July | 57   | 40   | 0    | 0
 5 July | 0    | 0    | 0    | 0
 6 July | 0    | 0    | 0    | 0
 7 July | 0    | 12   | 0    | 0

お気づきのとおり、欠落している日付の値を自動的に 0 に設定したいと考えています。それが可能かどうか疑問に思っています。

4

3 に答える 3

1

デフォルトで実際のテーブルから月のすべての日付を生成できる場合:1は、ソリューションが非常に単純になることを意味します...のように...

 SELECT     date  AS Date ,
            ISNULL(qty1, '') AS qty1,
            ISNULL(qty2, '') AS qty2,
            ISNULL(qty3, '') AS qty3,
            ISNULL(qty4, '') AS qty4,
    FROM    your_table_name where for_all_date

そうでなければ、あなたはこのようなことをしたい....

CREATE PROCEDURE put_null ()
AS 
DECLARE @start_date DATETIME
DECLARE @End_date DATETIME
    BEGIN             
      SELECT TOP 1 @start_date = date FROM your_table_name ORDER BY Date   
      SELECT TOP 1 @End_date = date FROM your_table_name ORDER BY Date  DESC 
        WHILE(@start_Date < = @End_date)
        BEGIN
        SELECT  @start_date AS Date ,
                ISNULL(qty1, 0) AS qty1,
                ISNULL(qty2, 0) AS qty2,
                ISNULL(qty3, 0) AS qty3,
                ISNULL(qty4, 0) AS qty4,
        FROM    your_table_name

        SET @start_date = DATEADD(DAY,1,@start_date)
        END
    END     

これで問題が解決することを願っています....

于 2012-09-07T10:23:25.010 に答える
0

ストアド プロシージャでは、 isNull(column,0)として処理できます。ストアド プロシージャの挿入クエリと検索クエリの両方で機能します。

于 2012-09-03T08:26:59.567 に答える
0

You could either use GETDATE() on the date column to automatically get it (unless you intend on there to be missing date values). In the other case, you could set up a default value (or DEFAULT CONSTRAINT) in that column, making the default value 0 if that is what you mean. Or do you mean you want to go back into already inserted rows and edit the columns?

于 2012-09-02T11:07:28.917 に答える