[英]if else condition using sql query
我有問題為下表生成SQL查詢。 這是我的表:
County | Store | Stock | Display | Designation
--------------- | --------- | ----- | ------- | ------------
USA | USD | 1 | Yes | Merchandiser
USA | USD | 2 | Yes | Promoter
我想成為這樣的結果
County | Store | Stock | Display | Designation
--------------- | --------- | ----- | ------- | ------------
USA | USD | 2 | Yes | Merchandiser
USA | USD | 2 | Yes | Promoter
方案是如果指定是促銷,則使用顯示和庫存數據。 如果Designation來自Merchandiser,請使用Promoter for Stock data中的數據如何實現這一目標?
Select a.Country, a.Store
, Stock = CASE WHEN a.Designation = "Merchendiser" THEN b.Stock ELSE a.Stock
, Display = CASE WHEN a.Designation = "Merchendiser" THEN b.Display ELSE a.Display
, a.Designation
FROM YourTable a LEFT JOIN YourTable b WHERE b.Designation = "Promoter"
可以做到這一點。 目前無法測試。
編輯:我看到你沒有說明你使用的SQL(即SQL服務器,MySQL,PostgreSQL等,所以取決於這個解決方案可能無法運行)。
嘗試這個
SELECT County,
Store ,
(CASE WHEN (Designation = 'Merchandiser') THEN (SELECT SUM(STOCK) FROM TABLE WHERE County = County AND Designation = 'Promoter' GROUP BY County) ELSE STOCK END) AS "stock",
Display,
Designation
FROM table
此請求為您提供所需的結果。
我想你期待像這樣的查詢
Select a.Country, a.Store , (CASE WHEN a.Designation = "Merchendiser" THEN (select Top 1 b.Stock from YourTable b where b.Designation = "Promoter" and b.Country = a.Country and b.Store = a.Store order by id desc) ELSE a.Stock) as Stock , a.Display , a.Designation FROM YourTable a WHERE b.Designation = "Promoter"
請嘗試以下代碼來創建臨時表
--===== If the test table already exists, drop it
IF OBJECT_ID('TestDB..#mytable','U') IS NOT NULL
DROP TABLE #mytable
--===== Create the test table with
CREATE TABLE #mytable
(
Country varchar(20),
Store varchar(20),
Stock int,
Display varchar(5),
Designation varchar(20)
)
--===== Insert the test data into the test table
INSERT INTO #mytable
(Country, Store, Stock, Display, Designation)
SELECT 'SG','a','2','YES','Merchandiser' UNION ALL
SELECT 'SG','a','4','YES','Promoter'
現在使用以上查詢
SELECT Country,
Store ,
(CASE WHEN (Designation = 'Merchandiser') THEN (SELECT SUM(STOCK) FROM #mytable WHERE Country = Country AND Designation = 'Promoter' GROUP BY Country) ELSE STOCK END) AS "stock",
Display,
Designation FROM #mytable
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.