gpt4 book ai didi

sql - 唯一计数 - SQL

转载 作者:行者123 更新时间:2023-12-02 15:18:20 25 4
gpt4 key购买 nike

代码

CREATE TABLE #TEMP (ID INT, AVAIL BIT, FK INT, DT DATETIME);
INSERT INTO #TEMP (ID,AVAIL,FK,DT)
SELECT 1,1,1,GETDATE()
UNION ALL
SELECT 2,0,2,GETDATE()
UNION ALL
SELECT 3,1,3,GETDATE()
UNION ALL
SELECT 1,1,4,GETDATE()
UNION ALL
SELECT 4,0,5,GETDATE()
UNION ALL
SELECT 5,1,6,GETDATE();


CREATE TABLE #FK (FK INT, DT2 DATETIME)
INSERT INTO #FK (FK, DT2)
SELECT 1,NULL
UNION
SELECT 2,DATEADD(DAY,1,GETDATE())
UNION
SELECT 3,DATEADD(DAY,1,GETDATE())
UNION
SELECT 4,NULL
UNION
SELECT 5,NULL
UNION
SELECT 6,DATEADD(DAY,1,GETDATE())
UNION
SELECT 7,DATEADD(DAY,1,GETDATE())


SELECT
[TotalIds] = COUNT(DISTINCT ID)
,[TotalAvail] = SUM(CASE WHEN [AVAIL] = 1 THEN 1 ELSE 0 END)
,[DTDIFF] = SUM(DATEDIFF(DAY,T1.DT,F.DT2))
FROM #TEMP T1 INNER JOIN #FK F
ON T1.FK = F.FK;

DROP TABLE #TEMP;
DROP TABLE #FK;

输出

TotalIds    TotalAvail  DTDIFF
5 4 3

期望的输出

TotalIds    TotalAvail  DTDIFF
5 3 3

目标:
我想获得 [AVAIL] = 1 的唯一 ID 的总和/计数。

我可以通过 COUNT(DISTINCT ID) WHERE [AVAIL] = 1 来做到这一点但是...我需要在这个 SUM 中这样做,因为我在同一个查询中查询其他数据。

 Desired output = 3 
(for ID 1, 3, and 5).

更新了当前/期望的输出。更新了更多数据。

最佳答案

您可以将 UNION ALL 更改为 UNION 并删除重复项

但是你提到了 otherValue,所以也许你需要这样的东西

SELECT SUM(otherValue)
FROM (
SELECT DISTINCT ID, AVAIL, otherValue
FROM TEMP
WHERE [AVAIL] = 1
) T

关于sql - 唯一计数 - SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39001006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com