久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

跨月字段比較 2 個表之間的值 SQL Server

Comparing values between 2 tables across month field SQL Server(跨月字段比較 2 個表之間的值 SQL Server)
本文介紹了跨月字段比較 2 個表之間的值 SQL Server的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

當前演示:

命令表表達式返回是否曾訂購過任何項目.然后,我們只需要計算/求和:

Current demo: http://sqlfiddle.com/#!18/7acdc/17

I am looking for a total of how many items were added in a specific month but then a total of how many were never ordered after that.

Tables:

CREATE TABLE Item (
    ItemNo varchar(10)
   ,DateAdded varchar(10)
);

CREATE TABLE Order1 (
    OrderNo int,
    ItemNo varchar(10),
    OrderDate varchar(10)
);


INSERT INTO Item (ItemNo, DateAdded)
VALUES ('111', 'Jan-17'),
('222', 'Jan-17'),
('333', 'Jan-17'),
('444', 'Feb-17'),
('555', 'Feb-17'),
('666', 'Feb-17');

INSERT INTO Order1 (ItemNo, OrderDate)
VALUES ('111', 'Jan-17'),
('111', 'Feb-17'),
('222', 'May-17'),
('333', 'Jan-17'),
('333', 'March-17'),
('444', 'Jan-17');

Currently i have:

SELECT  
-- b.OrderDate,
    A.DateAdded,
    COUNT(DISTINCT A.ItemNo) AS [Items Added],
    COUNT(CASE WHEN c.ItemNo IS NULL THEN 1 END) as [Items Never Ordered]
FROM    Item a
    CROSS JOIN (SELECT  DISTINCT OrderDate FROM Order1) b
    LEFT JOIN Order1 c
        ON a.ItemNo = c.ItemNo
            AND b.OrderDate = c.OrderDate 

  GROUP BY A.DateAdded

Which produces:

| DateAdded | Items Added | Items Never Ordered |
|-----------|-------------|---------------------|
|    Feb-17 |           3 |                  11 |
|    Jan-17 |           3 |                   7 |

But i am looking for a result set such as:

| DateAdded | Items Added | Items Never Ordered |
|-----------|-------------|---------------------|
|    Feb-17 |           3 |                   2 |
|    Jan-17 |           3 |                   0 |

I am struggling to get this working. Do i need a sub-query or something to match the items individually. Can anyone push me in the right direction? Thanks

解決方案

Maybe this:

WITH DataSource AS
(
    SELECT A.*
         ,MAX([IsEverOrdered]) OVER (PARTITION BY ItemNo) [IsEverOrdered]
    FROM Item A
    OUTER APPLY
    (
        SELECT 1 [IsEverOrdered]
        FROM Order1 B
        WHERE A.[ItemNo] = B.[ItemNo]
    ) DS
)
SELECT DateAdded
      ,COUNT(DISTINCT ItemNo) AS [Items Added]
      ,SUM(CASE WHEN [IsEverOrdered] IS NULL THEN 1 ELSE 0 END) AS [Items Never Ordered]
FROM DataSource
GROUP BY DateAdded;

The Commant Table Expression returns if any item was ever ordered. Then, we just need to count/sum:

這篇關于跨月字段比較 2 個表之間的值 SQL Server的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Converting Every Child Tags in to a Single Column with multiple Delimiters -SQL Server (3)(將每個子標記轉換為具有多個分隔符的單列-SQL Server (3))
How can I create a view from more than one table?(如何從多個表創建視圖?)
Create calculated value based on calculated value inside previous row(根據前一行內的計算值創建計算值)
How do I stack the first two columns of a table into a single column, but also pair third column with the first column only?(如何將表格的前兩列堆疊成一列,但也僅將第三列與第一列配對?) - IT屋-程序員軟件開發技
Recursive t-sql query(遞歸 t-sql 查詢)
Convert Month Name to Date / Month Number (Combinations of Questions amp; Answers)(將月份名稱轉換為日期/月份編號(問題和答案的組合))
主站蜘蛛池模板: 亚洲精品久久国产高清情趣图文 | 午夜视频在线免费观看 | 五月婷婷在线视频 | 久久中文免费视频 | 日韩字幕一区 | 欧美性乱 | 亚洲精品9999| 伊人免费网 | 日韩精品一区二区三区中文在线 | 精品久久久久久久久亚洲 | 国产成人一区二区三区精 | 免费在线观看黄色av | 毛片区 | 自拍偷拍一区二区三区 | 一区二区高清在线观看 | 无码日韩精品一区二区免费 | 成人激情视频在线播放 | 中文字幕一区在线观看视频 | 69av在线视频| 成人免费大片黄在线播放 | 日本免费在线看 | 成人性生交大免费 | 欧美黑人巨大videos精品 | 色橹橹欧美在线观看视频高清 | 九色在线观看 | 美女日批免费视频 | 国产高清免费 | 成av人电影在线 | av喷水| 精品国产乱码久久久久久丨区2区 | 亚洲国产aⅴ成人精品无吗 国产精品永久在线观看 | 黑人巨大精品欧美一区二区免费 | 97精品超碰一区二区三区 | 欧美日韩a | 亚洲高清在线观看 | 国产乱码精品一区二区三区中文 | 日韩欧美一级片 | 日日操夜夜干 | 天天拍天天操 | 视频一区二区国产 | 国产成人精品999在线观看 |