1

次のことを前提とします。

CREATE TABLE #Testing
(
      [id] [int] IDENTITY(1,1) NOT NULL,
      [store_id] [varchar](3) NULL,
      [sku] [varchar](14) NULL,
      [qty] [bigint] NULL,
      [http_action] [varchar](20) NULL
)

INSERT INTO #Testing (store_id, sku, qty, http_action)
SELECT '001','123456',1,'POST'
UNION ALL
SELECT '002','123456',1,'POST'
UNION ALL
SELECT '002','123456',1,'DELETE'
UNION ALL
SELECT '001','223456',5,'DELETE'

[http_action] ごとに最小の [id] を返すために実行できる単一のクエリは何ですか? 何かのようなもの:

MIN_DELETE  MIN_POST
3           1

GO
4

2 に答える 2

4

集計関数をCASE式で使用して、min(id)for eachを取得できhttp_actionます。

select 
  min(case when http_action='DELETE' then id end) Min_Delete,
  min(case when http_action='POST' then id end) Min_Post
from #testing;

SQL Fiddle with Demoを参照してください。

上記のクエリは、min(id)値を別々の列に配置します。値を行にしたい場合は、次を使用できます。

select min(id) id,
  http_action
from #testing
group by http_action;

デモで SQL Fiddle を参照してください

于 2013-05-01T18:16:28.693 に答える