給定一張表(列有月份,銷售額),要求查詢出月份、本月銷售額、上月銷售額這三個結果,如果當月上個月的銷售額不存在就顯示為“*”。

来源:http://www.cnblogs.com/bobozhu/archive/2016/01/14/5130594.html
-Advertisement-
Play Games

剛逛論壇,發現一個這樣的問題,如果不建立一個新的月份的表,可以用CET來解決。給定一張表(列有月份,銷售額),要求查詢出月份、本月銷售額、上月銷售額這三個結果,如果當月上個月的銷售額不存在就顯示為“*”。if exists (select * from sysobjects where id = o...


剛逛論壇,發現一個這樣的問題,如果不建立一個新的月份的表,可以用CET來解決。

給定一張表(列有月份,銷售額),要求查詢出月份、本月銷售額、上月銷售額這三個結果,如果當月上個月的銷售額不存在就顯示為“*”。

if exists (select * from sysobjects where id = object_id(N'[tb2]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)  drop table [tb2]  


CREATE TABLE tb2(
ID INT IDENTITY,
SALEDATE DATETIME,
AMOUNT FLOAT
)

INSERT INTO tb2
SELECT '2015-05-02',20.1
INSERT INTO tb2
SELECT '2015-02-02',24.1
INSERT INTO tb2
SELECT '2015-03-02',10.4
INSERT INTO tb2
SELECT '2015-05-12',27.8
INSERT INTO tb2
SELECT '2015-06-02',70.13
INSERT INTO tb2
SELECT '2015-06-12',90.31
INSERT INTO tb2
SELECT '2016-01-06',30.22
INSERT INTO tb2
SELECT '2016-02-08',5.7

插入後顯示表的數據

SELECT * FROM tb2

用以下sql跑出所需要的結果

WITH MON as(
select CONVERT(VARCHAR(7),GETDATE(),120) AS MO
UNION 
SELECT CONVERT(VARCHAR(7),DATEADD(M,-1,GETDATE()),120) AS MO
)

SELECT MO AS MONTH,CASE WHEN  SUM(ISNULL(AMOUNT,0))=0 THEN '*'
ELSE CAST(SUM(ISNULL(AMOUNT,0)) AS VARCHAR(10)) END AS SUM_AMOUNT 
FROM Mon 
LEFT JOIN tb2 ON MO=CONVERT(VARCHAR(7),SALEDATE,120)
GROUP BY MO

如果還有其他好的方法,希望互相交流下,謝謝!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 不少設計師和工程師都被安卓設備紛繁的屏幕搞得暈頭轉向,我既做UI設計,也做過一點安卓界面佈局,剛好對這塊內容比較熟悉,也曾在公司內部做過相關的講座,在此,我將此部分知識重新梳理出來分享給大家!
  • iOS開發之 監聽事件全攻略(一)協議代理= 2016年才開始沒幾天,IT業界大事件快播庭審,最近兩天看了快播庭審,真是精彩,王欣辯護人金嘴真是絕了,話說快播辯護人的金嘴,句句金腔,我很贊同辯護人道出當今互聯網業界的一些不合規矩或者不合法律的一些互聯網公司打的擦邊球,拉下幾家知名互聯網公司陪斬,.....
  • 命令模式的定義:將“請求”封裝成對象,以便使用不同的請求、隊列或者日誌來參數化其他對象。命令模式也支持撤銷的操作。註意命令模式是將請求封裝成對象! 其實簡單的說,命令模式就是把方法調用封裝起來了,通過封裝方法調用,可以把運算塊包裝成型,所以調用此運算的對象不需要關心事情是如何進行的,...
  • 1、SwipeBackLayout項目地址:https://github.com/ikew0ng/SwipeBackLayout2、用法android studiocompile 'me.imid.swipebacklayout.lib:library:1.0.0'項目實例package com.e...
  • 什麼是looksalive check和is alive check SQL Server故障轉移集群是建立在windows集群服務上的一種熱備的高可用方案。在集群運行過程中,windows集群服務定期檢測節點的資源健康狀態,如果發生了故障,會根據預先定義的故障轉移策略把SQL Server服務從....
  • 一、什麼是觸發器簡單的說,就是一張表發生了某件事(插入、刪除、更新操作),然後自動觸發了預先編寫好的若幹條SQL語句的執行;二、特點及作用特點:觸發事件的操作和觸發器里的SQL語句是一個事務操作,具有原子性,要麼全部執行,要麼都不執行;作用:保證數據的完整性,起到約束的作用;三、例子:創建觸發器,記...
  • 1 create procedure usp_CallWebServices 2 ( 3 @parameter nvarchar(500)=null 4 ) 5 as 6 Declare @obj int 7 Declare @SvercieUrl nvarchar(200) 8 ...
  • 流程式控制制 1.If,then,else,elsif(不是elseif) if a='1' then null; endif; 2.Case 簡單case表達式: 搜索型Case表達式: 3.goto語句 begin if true then goto label2; end if; > SYS.DB...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...